{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "5d904dee",
   "metadata": {},
   "source": [
    "# PDE 3D"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "79bcdcae",
   "metadata": {},
   "outputs": [],
   "source": [
    "# the key is randomness of scale_base_noise, and G"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "4c022f97",
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "pde loss: 1.03e+01 | bc loss: 2.22e-02 | l2: 1.70e-02 : 100%|█| 10/10 [01:29<00:\n"
     ]
    }
   ],
   "source": [
    "from kan import KAN, LBFGS\n",
    "import torch\n",
    "#from torch.autograd import grad\n",
    "import matplotlib.pyplot as plt\n",
    "from torch import autograd\n",
    "from tqdm import tqdm\n",
    "\n",
    "dim = 3\n",
    "np_i = 11\n",
    "np_b = 11\n",
    "ranges = [-1, 1]\n",
    "\n",
    "model = KAN(width=[3,3,3,1], grid=5, k=3, grid_eps=1.0, noise_scale_base=2.0)\n",
    "\n",
    "def batch_jacobian(func, x, create_graph=False):\n",
    "    # x in shape (Batch, Length)\n",
    "    def _func_sum(x):\n",
    "        return func(x).sum(dim=0)\n",
    "    return autograd.functional.jacobian(_func_sum, x, create_graph=create_graph).permute(1,0,2)\n",
    "\n",
    "# define solution\n",
    "sol_fun = lambda x: torch.sin(torch.pi*x[:,[0]])*torch.sin(torch.pi*x[:,[1]])*torch.sin(torch.pi*x[:,[2]])\n",
    "source_fun = lambda x: -3*torch.pi**2 * torch.sin(torch.pi*x[:,[0]])*torch.sin(torch.pi*x[:,[1]])*torch.sin(torch.pi*x[:,[2]])\n",
    "\n",
    "# interior\n",
    "x_mesh = torch.linspace(ranges[0],ranges[1],steps=np_i)\n",
    "y_mesh = torch.linspace(ranges[0],ranges[1],steps=np_i)\n",
    "z_mesh = torch.linspace(ranges[0],ranges[1],steps=np_i)\n",
    "X, Y, Z = torch.meshgrid(x_mesh, y_mesh, z_mesh, indexing=\"ij\")\n",
    "x_i = torch.stack([X.reshape(-1,), Y.reshape(-1,), Z.reshape(-1,)]).permute(1,0)\n",
    "\n",
    "# boundary, 6 sides\n",
    "helper = lambda X, Y, Z: torch.stack([X.reshape(-1,), Y.reshape(-1,), Z.reshape(-1,)]).permute(1,0)\n",
    "xb1 = helper(X[0], Y[0], Z[0])\n",
    "xb2 = helper(X[-1], Y[0], Z[0])\n",
    "xb3 = helper(X[:,0], Y[:,0], Z[:,0])\n",
    "xb4 = helper(X[:,0], Y[:,-1], Z[:,0])\n",
    "xb5 = helper(X[:,:,0], Y[:,:,0], Z[:,:,0])\n",
    "xb6 = helper(X[:,:,0], Y[:,:,0], Z[:,:,-1])\n",
    "x_b = torch.cat([xb1, xb2, xb3, xb4, xb5, xb6], dim=0)\n",
    "\n",
    "steps = 10\n",
    "alpha = 0.01\n",
    "log = 1\n",
    "\n",
    "def train():\n",
    "    optimizer = LBFGS(model.parameters(), lr=1, history_size=10, line_search_fn=\"strong_wolfe\", tolerance_grad=1e-32, tolerance_change=1e-32, tolerance_ys=1e-32)\n",
    "    pbar = tqdm(range(steps), desc='description')\n",
    "    for _ in pbar:\n",
    "        def closure():\n",
    "            optimizer.zero_grad()\n",
    "            # interior loss\n",
    "            sol = sol_fun(x_i)\n",
    "            sol_D1_fun = lambda x: batch_jacobian(model, x, create_graph=True)[:,0,:]\n",
    "            sol_D1 = sol_D1_fun(x_i)\n",
    "            sol_D2 = batch_jacobian(sol_D1_fun, x_i, create_graph=True)[:,:,:]\n",
    "            lap = torch.sum(torch.diagonal(sol_D2, dim1=1, dim2=2), dim=1, keepdim=True)\n",
    "            source = source_fun(x_i)\n",
    "            pde_loss = torch.mean((lap - source)**2)\n",
    "\n",
    "            # boundary loss\n",
    "            bc_true = sol_fun(x_b)\n",
    "            bc_pred = model(x_b)\n",
    "            bc_loss = torch.mean((bc_pred-bc_true)**2)\n",
    "\n",
    "            loss = alpha * pde_loss + bc_loss\n",
    "            #exec(code)\n",
    "            loss.backward()\n",
    "            return loss\n",
    "\n",
    "        if _ % 5 == 0 and _ < 20:\n",
    "            model.update_grid_from_samples(x_i)\n",
    "\n",
    "        # interior loss\n",
    "        sol = sol_fun(x_i)\n",
    "        sol_D1_fun = lambda x: batch_jacobian(model, x, create_graph=True)[:,0,:]\n",
    "        sol_D1 = sol_D1_fun(x_i)\n",
    "        sol_D2 = batch_jacobian(sol_D1_fun, x_i, create_graph=True)[:,:,:]\n",
    "        lap = torch.sum(torch.diagonal(sol_D2, dim1=1, dim2=2), dim=1, keepdim=True)\n",
    "        source = source_fun(x_i)\n",
    "        pde_loss = torch.mean((lap - source)**2)\n",
    "\n",
    "        # boundary loss\n",
    "        bc_true = sol_fun(x_b)\n",
    "        bc_pred = model(x_b)\n",
    "        bc_loss = torch.mean((bc_pred-bc_true)**2)\n",
    "\n",
    "        loss = alpha * pde_loss + bc_loss\n",
    "\n",
    "        l2 = torch.mean((model(x_i) - sol)**2)\n",
    "\n",
    "        if _ % log == 0:\n",
    "            pbar.set_description(\"pde loss: %.2e | bc loss: %.2e | l2: %.2e \" % (pde_loss.cpu().detach().numpy(), bc_loss.cpu().detach().numpy(), l2.detach().numpy()))\n",
    "\n",
    "        optimizer.step(closure)\n",
    "\n",
    "train()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "cc1ec246",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAeQAAAI+CAYAAABt43ktAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjYuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8o6BhiAAAACXBIWXMAAA9hAAAPYQGoP6dpAADHPklEQVR4nOzdd1wU99MH8M/e0QSxFyyxJnZN7MZeYu8Fu9gVC2jsiVGMGntDRMGKNSpgF3vXxN4LdmPBAqL0drfz/OHv9gFBpdzd7h3zfr38J4G9WW5u53Z3dr4CEREYY4wxJiuV3AEwxhhjjAsyY4wxpghckBljjDEF4ILMGGOMKQAXZMYYY0wBuCAzxhhjCsAFmTHGGFMALsiMMcaYAnBBZowxxhSACzJjjDGmAFyQGWOMMQXggswYY4wpABdkxhhjTAG4IDPGGGMKwAWZMcYYUwAuyIwxxpgCcEFmjDHGFMBC7gAYY+mXkJCA/fv3IzAwEJGRkciaNSvKlCmD1q1bw9LSUu7wGGNpwAWZMRMUFBQEb29vrFixAsHBwbCwsIAgCCAiaDQa5M2bF8OGDcPQoUNRsGBBucNljKWCQEQkdxCMsdQ7efIk2rZti5iYGGi12i/+nFqtRpYsWbB37140bNjQeAEyxtKFCzJjJuTkyZNo2rQpRFGEKIrf/HmVSgWVSoUjR45wUWZM4bggM2YigoKCULp0aURHR6eqGOuoVCrY2dkhMDCQL18zpmDcZc2YifD29kZMTEyaijEAiKKIqKgorFy50kCRMcb0gc+QGTMBCQkJKFSoEIKDg9O9jXz58uHly5fcfc2YQvEZMmMmYP/+/RkqxgDw7t07BAQE6Ckixpi+cUFmzAQEBgbCwiJjTymq1WoEBgbqKSLGmL5xQWbMBERGRkIQhAxtQ6VSISIiQk8RMcb0jQsyYyYga9asaW7m+pwoirC3t9dTRIwxfeOCzJjCBQUF4erVq18dApIaWq0WZcqU0VNUjDF944LMmEJdunQJvXv3RtGiReHr6wuVKuMfVz8/P1y+fFkP0THG9I0LMmMKotFosH37dtSuXRs1atTA5s2bUa9ePezatQu///471Gp1urYrCAKKFy+OrVu34ueff0b9+vXh6+sLjUaj5z1gjKUXP4fMmAK8f/8eq1atgqenJ16+fAlra2v06tULo0aNQqVKlQDoZ1JXSEgIPDw88PfffyMuLg7fffcdhg0bhoEDByJXrlyG2j3GWCpwQWZMRnfu3MHSpUuxceNGxMTEoECBAhgxYgSGDBmCvHnzJvv59M6yPnr0KBo0aCD99+DgYKxatQpeXl54/fo1smTJgl69esHV1RVly5bV6z4yxlKHCzJjRiaKIg4cOAB3d3ccOXIEAFCjRg2MGjUKXbp0gZWV1Vd//+TJk2jXrh2io6O/2uilOzPeu3dvkmKcWHx8PPz9/bF06VLp3vIvv/wCFxcXtGjRQi/3rRljqcMFmTEjiYiIgI+PDzw8PPDw4UOo1Wp06dIFo0ePRq1atdK0raCgIKxcuRLLly9PMsFLrVZDq9UiX758GDZsGIYMGZKqBSWICBcuXICHhwf8/f2h1Wrx/fffw8XFBX369OHHpRgzAi7IjBnYkydPsGzZMqxZswbh4eHIlSsXhg4diuHDh6Nw4cIZ2nZCQgICAgIwdOhQiKKIsWPHokyZMmjVqlW6Z1a/ePECXl5eWL16NUJDQ5EtWzb0798fI0eORLFixTIUL2Psy7ggM2YARIRTp05hyZIl2LNnD4gI5cuXx6hRo9CrVy/Y2trq9fUqVKgAALh9+7bethkdHY2///4bS5cuxd27d6FSqdC2bVu4uLigfv36GZ4cxhhLigsyY3oUGxuLLVu2wN3dHTdv3oQgCGjdujVGjx6Nxo0bG6yIGaIg6xARjh8/Dg8PDwQEBICIUKlSJbi6uqJbt26wsbHR+2sylhlxQWZMD4KCgrBixQp4eXkhJCQEWbNmxYABA+Di4oLvv//e4K9vyIKc2OPHj7Fs2TL4+PggMjISefPmxeDBgzF06NBU3atmjH0ZF2TGMuDixYtwd3fH9u3bodFoUKJECbi4uKB///7Inj270eIwVkHWCQsLw/r167Fs2TI8ffoUFhYW6Nq1K1xcXFCtWjWjxMCYueGCzFgaJSQkYMeOHXB3d8e///4LAGjUqBFGjx6N1q1bp3uaVkYYuyDraLVa7N+/Hx4eHjh58iQAoFatWnB1dUWHDh3S3VjGWGbEBZmxVEppmlbv3r3h6uoqTdOSi1wFObFbt25h6dKl0hSwwoULS1PAcufOLVtcjJkKLsiMfcOdO3fg7u6OTZs2ISYmBgULFsTw4cO/OE1LDkooyDrBwcFYvXo1VqxYkWQKmIuLC8qVKyd3eIwpFhdkxlIgiiICAgLg7u6Oo0ePAvg0TWv06NHo3LnzN6dpGZuSCrKObgqYh4cHLl26BABo0qQJXFxc0LJlS54CxthnuCAzlkhERATWrVsHDw8PPHr0CBYWFujSpQtGjRqV5mlaxqTEgpzYhQsXsHTp0iRTwEaOHAknJyeeAsbY/3BBZgyfpml5eHhg7dq1CA8PR+7cuTFkyBC9TNMyBqUXZJ2XL1/Cy8sLq1atkqaA9evXDyNHjkTx4sXlDo8xWXFBZpkWEeHkyZNwd3dPMk1r9OjR6NWrF7JkySJ3iKlmKgVZ5/MpYIIgSFPAGjRowFPAWKbEBZllOjExMdiyZQuWLl0qTdNq06YNRo0aZdBpWoZkagVZh4hw4sQJLF26VJoCVrFiRbi6uqJ79+48BYxlKlyQWaYRFBSE5cuXw9vbGyEhIbC3t0f//v2NNk3LkEy1ICf2+RSwPHnyYPDgwXB2duYpYCxT4ILMzN7FixexZMkS+Pr6QqPRoGTJktI0rWzZsskdnl6YQ0HWSWkKmKOjI1xcXFC9enW5w2PMYLggM7OUkJAAf39/uLu74/z58wCAxo0bY9SoUbJN0zIkcyrIOlqtFgEBAfDw8MCJEycAADVr1oSrqys6duzIU8CY2eGCzMzK+/fvsXLlSnh6euLVq1ewsbGRpmlVrFhR7vAMxhwLcmK3bt2Ch4cHtmzZgri4OBQqVAjDhg3DoEGDeAoYMxtckJlZuH37NpYuXYqNGzciNjYWBQsWxIgRIzBkyBDkyZNH7vAMztwLsk5ISIg0BSwoKAg2Njbo1asXXF1deQoYM3lckJnJ0k3TWrJkCY4dOwbg0yXNUaNGoUuXLpnqkmZmKcg6ulsSHh4euHjxIgCeAsZMHxdkZnJSmqbl6OiIUaNGoWbNmnKHJ4vMVpATu3DhAjw8PODv7y817Y0cORJ9+/blKWDMpHBBZiZDN01rzZo1iIiIQO7cuTF06FAMHz4chQoVkjs8WWXmgqzz6tUraQrY+/fveQoYMzlckJmi6QZHuLu7Y+/evSAiVKhQAaNHj0bPnj1NapqWIXFB/n8xMTHSFLA7d+7wFDBmMrggM0XSTdNyd3fHrVu3pIPqqFGj0KhRIz6ofoYLcnK60ahLly7F/v37pSlgLi4u6N69O3+ZY4rDBZkpyqtXr6RpWu/fv4e9vT0GDBgAFxcXlCxZUu7wFIsL8tc9fvwYnp6e8PHxQUREBE8BY4rEBZkpwoULF+Du7p5kmparqyv69etnNtO0DIkLcuqEh4dLU8CePHkiLa/p6urKU8CY7LggM9mkNE2rSZMmGDVqFFq1amV207QMiQty2mi1Whw4cAAeHh44fvw4gE+PzLm4uKBTp06Z6pE5phxckJnRhYSEYOXKlVi+fHmmmqZlSFyQ0+/27dvSFLDY2FieAsZkwwWZGc3t27fh7u6OTZs2SQe+ESNGYPDgwZlimpYhcUHOuJSmgPXs2ROurq4oX7683OGxTIALMjMoURSxf/9+LFmyRLo0WKtWLYwaNQqdO3fmS4N6wgVZfxISErBjxw4sXbpUmgLWuHFjuLi4oFWrVjwFjBkMF2RmEOHh4dI0rcePH/M0LQPjgmwYFy9ehIeHB/z8/KDRaFCiRAm4uLjAycmJmw2Z3nFBZnr1+PFjeHh4YO3atdI0LWdnZwwbNizTT9MyJC7IhvX5FDB7e3tpCliJEiXkDo+ZCS7ILMN007SWLFmCffv2SQMYRo0axdO0jIQLsnHExMRg69atcHd3l6aAtWnTBi4uLmjYsCEPrGEZwgWZpVtMTAw2b94Md3d33L59W5qmNXr0aD44GRkXZOPSTQHz8PCQvoRWqFABLi4u6NGjB38JZenCBZmlWUrTtAYOHIiRI0fyNC2ZcEGWz5MnT7Bs2TJpClju3LmlKWB8m4alBRdklmrnz5+Hu7u71ODC07SUgwuy/MLDw7FhwwZ4eHgkmQLm4uKCGjVqyB0eMwFckNlXJSQkwM/PD+7u7rhw4QKAT9O0Ro8ezY+AKAgXZOVIaQpYjRo14OLiwo/6sa/igsxSFBISAm9vbyxfvlwaktCnTx+4urpKB3+mHFyQlSmlKWDOzs4YNGgQD8NhyXBBZkncunUL7u7u2Lx5M0/TMiFckJUtJCQEa9aswYoVK6RxsT169OAvuCwJLsgMWq0W+/fvh7u7u3SJ7eeff8aoUaN40L6J4IJsGnRTwDw8PKRbQI0aNZKmgPGCKpkbF+RMLDw8HGvXrk3ShNK1a1eMGjWKm1BMDBdk03Pp0iV4eHhIS44WL14cLi4u6Nu3LzdJZlJckDOhR48ewcPDA+vWrZMWax86dCiGDx/Oi7WbKC7IpuvVq1fw9vbGqlWrEBISwlPAMjEuyJkEEeH48eNwd3eXBhlUqlQJo0aN4kEGZoALsunTTQFbunSpNGindevWcHV15UE7mQQXZDOX0jStdu3aYdSoUfwhNyNckM0HEeHUqVPw8PDA3r17QUQoX748XF1d+cuzmeOCbKZevnyJ5cuXY+XKlXj//j2yZcsmTdPiy2DmhwuyeXry5Ak8PT2l20s8Bcy8cUE2M59P0/r++++laVr29vZyh8cMhAuyeYuIiJCmgOmWM+3cuTNcXFx4OVMzwgXZDMTHx0vTtHQLqv/yyy8YPXo0WrZsydO0MgEuyJmDKIrSFLBjx44B4Clg5oQLsgkLDg7GypUrk0zTcnJygqurK8qXLy93eMyIuCBnPnfu3IGHh4c0xKdgwYJwdnbmIT4mjAuyCdJN09q0aRPi4uJQuHBhaZpW7ty55Q6PyYALcub1/v17rFmzBsuXL+cpYCaOC7KJ0Gq12LdvH9zd3XHixAkAn6ZpjR49Gh07duRLVZkcF2SWkJCAnTt3wsPDA+fPnwfAU8BMDRdkhUtpmla3bt0watQoVK9eXe7wmEJwQWaJpTQFbOTIkbxUqsJxQVaohw8fStO0IiMjkSdPHjg7O2PYsGE8TYslwwWZpSQoKAje3t5YuXKlNAWsb9++GDlyJEqWLCl3eOwzXJAVhIhw7NgxuLu7Y//+/UmmafXs2RM2NjZyh8gUigsy+5qYmBhs27YNS5cuxa1btyAIAlq1agVXV1c0atSIBwQpBBdkBYiOjpamad25cweCIKB9+/YYNWoUGjRowB8W9k1ckFlqfGkKmIuLC3r27MlTwGTGBVlGL1++hKenJ1auXInQ0FCepsXSjQsyS6unT59KU8DCw8ORK1cuaQpY4cKF5Q4vU+KCbGRElGSallar5WlaLMO4ILP0+nwKmFqtRufOneHq6spTwIyMC7KR6KZpLVmyBJcuXQIANG3aFKNGjeJpWizDuCCzjBJFEQcPHsTSpUulKWDVq1eXpoBZWVnJHKH544JsYMHBwfD29sby5cvx+vVrZMmSBX369OFpWkyvuCAzfbp79y48PDywadMmxMbGokCBAhg2bBgGDRqEvHnzyh2e2eKCbCCBgYGYP38+Nm/eLE3TGjlyJAYNGsTTtJjecUFmhqCbArZixQq8fPkS1tbW6NGjB8aNG4fSpUvLHZ7Z4YLMmBnQarUAwNOYmEEQEYgIoiiCiKBWq/k2mwFYyB2AUhERXrx4IXcYAIDvvvuOH30yY5xrzFj0kWtEpJcc4VxLjgvyF4iiCHd3d9SoUcMor/f69WvY2dklG2t36dIlzJ07l898zJgoili6dKnRcu1zcXFxePXqFUJCQjjXzJwoivDw8ICtrS2KFCki21Mdly9fxuzZsznXPsMF+SsqV66Mbt26GfQ1iAjr1q3D7NmzkTt3bhw9ejTJaEytVgu+q2D+KleujK5du8ry2itXrsTChQsxY8YMzrVMoFKlSnB1dUXhwoXRs2dPODs7I0eOHEY9W+XjWsr4JoDMnj17BmdnZ5QvXx7Pnj2Dk5MTJyozGq1WCzc3N+TLlw/Zs2eXOxxmBESEOXPmoGjRopgxYwbq1auHf/75h487CsAFWUZEhIEDB8LS0hI7duzAqFGjcPz4cYSHh8sdGsskjhw5gnfv3mHx4sVyh8KMRK1WY8iQIdi1axf27NkDrVaLVq1aYfPmzVyUZcYFWUZBQUE4efIkxo0bh+zZs2P06NEgIuzevVvu0FgmIIoiXF1dUaBAATRp0kTucJgRCYIACwsLNGnSBCdPnkT16tUxePBgrF69mouyjLggy4SI4ObmBpVKhXHjxkEQBOTLlw/29vZYs2aN3OGxTOD06dN4/PgxFi5cyM01mZQgCMifPz92796NX375BS4uLti0aRMXZZlwQZaJRqPB5s2b0aJFC2TNmhXApw9HnTp1cPnyZf5AMIMSRRFDhw5F/vz50blzZ7nDYTKzs7PDtm3bUK9ePQwdOhQHDx7kY5AMuCDL5PDhw4iNjcVff/2VpLuxU6dOiI6ORnR0tIzRMXO3f/9+PHr0CO7u7rCw4IctGGBrawt/f3+ULVsWPXr0wK1bt7goGxkXZBkQEaZNm4acOXOiYsWKSf5fw4YNAQAPHz6UITKWGSQkJMDZ2RklSpRAp06d5A6HKUi2bNmwb98+ZM+eHW3atMG7d+/kDilT4YIsg6ioKFy9ehWDBg1KNn6uSJEiAIAzZ87IERozc0SEpUuX4s2bN1i3bh3fO2bJODg4YN++fQgLC0P79u0RGxsrd0iZBhdkGfj6+kodrp+zsrKCtbU1Tp48afzAmNl7//493Nzc0LhxY9SpU0fucJgCCYKAChUqYN26dbh27RpcXV0hiqLcYWUKXJCNjIgwf/585M+fH4UKFUr2/wVBQMGCBXH9+nXjB8fMGhFh8ODB0Gg0WLduHc8RZl8kCAI6duyI8ePHw8fHBz4+Pnw/2Qi4IBtZZGQkAgMD4ezs/MUDYsWKFfH69Wv+ADC9ISIcPXoUe/fuxeTJk1P8MshYYoIgYNq0aWjQoAFcXV1x584duUMye1yQjWz79u0gIgwdOvSLP1O9enXExMRIS+oxllFRUVHo06cPSpQogYkTJ/LZMUsVCwsLbN26FdmzZ0eHDh0QFRUld0hmjQuyERERFixYAAcHBzg4OHzx56pUqQIAiIiIMFZozIwREZydnREaGgpfX19YWVnJHRIzIbly5YKfnx9evnyJIUOG8P1kA+KCbEQRERG4f/8+hg0b9tUzlFKlSgEAXr16ZazQmJkiIuzcuRNbt27FxIkTUalSJblDYiZGEATUqlULf/zxB7Zv346///6bb6cZCBdkI9q6dSuICEOGDPnqz+XPnx8AcP/+fWOExczYq1evMGDAAPz444+YOnUqX6pm6SIIAiZNmoSaNWti+PDhePHihdwhmSUuyEaiu1xdqFAhqeB+ia2tLQRBwO3bt40UHTNHcXFxaN++vXSWbGlpKXdIzIRZWFjA19cXKpUKXbp0gUajkTsks8MF2Ug+fPiAR48ewcXF5ZtnKSqVClZWVtzVyNJNFEW4uLjg5s2b2LBhA7777ju5Q2JmwMHBAatWrcK1a9cwe/ZsvnStZ1yQjUS3rNmgQYNS9fPZs2fn8ZksXYgIq1evxtq1azFmzBi0a9eOL1UzvRAEAZ07d0bnzp0xa9Ys3LhxQ+6QzAoXZCMgIixevBilS5dGrly5vvnzuuEgr1+/NkJ0zJwQEU6fPg1XV1c0bdo02eIljGWUIAhYtWoVcufODUdHR8TExMgdktnggmwEDx48wJs3b+Dm5pbqg2Px4sURFhZm4MiYOSEiPHr0CJ06dULx4sWxbds2XsmJGYS9vT22bt2K58+f49dff+VL13rCBdnAiAiTJ0+GlZVVmlbWKVWqFOLi4jjRWaoFBwejefPmUKvVOHDgALJlyyZ3SMyM1alTByNHjsTatWtx6NAhPlbpARdkA4uIiMDu3bvRvXv3NA1kKFeuHHLlyoWEhAQDRsfMRVhYGFq2bIng4GDs27cPRYsWlTskZuYEQcCsWbNQpkwZ9OnTB8HBwXKHZPK4IBsQEWH27NnQarWYNWtWmu7lderUCdevX+dHVdg3RUZGol27drh79y62bt2K6tWr831jZhTW1tbYuXMn4uLi0KVLFz6ByCAuyAYUERGBJUuWoFmzZihYsGCafjdr1qwoXLgwH1jZV0VERKBjx444f/481q5di1atWnHOMKMqUaIEPD09cf78ebi5ufGl6wzggmwgRIQxY8YgISEBXl5efJBkevf+/Xu0bdsWZ86cwapVq9C9e3fOM2Z0giCgd+/e6N+/PxYuXAg/Pz8uyunEBdkAiAgXL17EunXrMGTIEL6fx/SKiPDkyRM0adIEly5dgo+PD/r06cPFmMlGEAQsXboU1apVw8CBA3Hx4kUuyunABdkAQkJC0LFjRxQsWBALFizgAyXTG926xvXr18fLly+xY8cOdOvWjXOMyc7a2hq7d++Gg4MD2rVrh9u3b3NRTiMuyHpERHj9+jWaNWuGsLAw7N27F7a2tnKHxUxEcHDwFw9gRITw8HD88ccfaN++PXLlyoUTJ06gWbNmXIyZYuTJkwcHDx6EtbU1mjdvjsuXLyfLaS7SX8YF+SuICHPnzsXcuXOxZs0anDhxAs+ePUN0dDREUQQRSf+ioqKwe/du1KlTB48ePYKvry9+/PFHuXeBmYj4+Hg0aNAAs2bNQmhoaJLc+vDhA7Zu3Yq6detiwYIF6NGjB06ePIkKFSpwMWaKU7x4cRw5cgR2dnZo3rw51q5di9jYWBAR3r59i1mzZkGr1codpiLxGJ9vmDt3LogIcXFx0Gg0yJo1KwoVKoTvv/8e3333HWxtbfHu3TtcvnwZ9+7dQ5kyZbB582bUqlWLD5Ys1YgIP/74I6ZPnw4fHx/Uq1cP+fLlQ1BQEP755x88f/4cFStWhL+/P1q2bAm1Wi13yIylSBAElCpVCidOnMCAAQMwYsQIrFu3DnXq1MG+ffsQFBSEmTNnyh2mInFB/gpBEHDt2jUAnwYvPH36FDdv3sSNGzfw+PFjXLlyBRqNBnZ2dihVqhRGjRoFR0dH2NvbczFmaWJtbY2NGzeiT58+WLt2Lc6ePYvo6GjY29ujevXqmDdvHpo3by4tzcmYkgmCgMKFC2PPnj3YvHkz1qxZg7///huFCxfGihUr8OrVK7lDVCSB+IJ+irRaLcaNG4eqVasm+3+iKCI+Ph4xMTHQaDSwtraGnZ2dQc5arl69ivnz5/MZkRnTarUYP368lGuiKCIyMhJxcXGwsbGBnZ0dVCrD3126evUq5s2bx7lmxrRaLSZMmIAqVaoY9XXj4uIQEREBe3t7WFtb49q1a5g7dy7n2me4IH8BEeHNmzdyhwHg0xqkfFZkvjjXmLFwrikbF2TGGGNMAbjLmjEzoNVquXOVGZxGo4FGo5E7DLPFZ8gGVL58eQDAnTt3ZI6EmbsKFSoAAG7fvi1zJMycVapUCQBw8+ZNmSMxT3yGzBhjjCkAF2TGGGNMAbggM8YYYwrABZkxxhhTAC7IjDHGmAJwQWaMMcYUgAsyY4wxpgBckBljjDEF4ILMGGOMKQAXZMYYY0wBuCAzxhhjCsAFmTHGGFMALsiMMcaYAnBBZowxxhSACzJjjDGmAFyQGWOMMQXggswYY4wpABdkxhhjTAG4IDPGGGMKwAWZMcYYUwAuyIwxxpgCcEFmjDHGFIALMmOMMaYAXJAZY4wxBeCCzBhjjCkAF2TGGGNMAbggM8YYYwrABZkxxhhTAC7IjDHGmAJwQWaMMcYUgAsyY4wxpgBckBljjDEF4ILMGGOMKQAXZMYYY0wBuCAzxhhjCsAFmTHGGFMALsiMMcaYAnBBZowxxhSACzJjjDGmAFyQGWOMMQXggswYY4wpABdkxhhjTAG4IDPGGGMKwAWZMcYYUwAuyIwxxpgCcEFmjDHGFIALMmOMMaYAXJAZY4wxBeCCzBhjjCkAF2TGGGNMAbggM8YYYwrABZkxxhhTAC7IjDHGmAJwQWaMMcYUgAsyY4wxpgBckBljjDEF4ILMGGOMKQAXZANISEjArl27EBISgnfv3mHOnDnYtWsXEhIS5A6NmRnONWYMujwLDg7G27dvOc8MRCAikjsIcxEUFARvb2+sWLECwcHB0n+3sLCARqNB3rx5MWzYMAwdOhQFCxaUMVJm6jjXmDFwnhkXF2Q9OXnyJNq2bYuYmBhotdov/pxarUaWLFmwd+9eNGzY0HgBMrPBucaMgfPM+Lgg68HJkyfRtGlTiKIIURS/+fMqlQoqlQpHjhzhBGZpwrnGjIHzTB5ckDMoKCgIpUuXRnR0dKoSV0elUsHOzg6BgYF8qYelCucaMwbOM/lwU1cGeXt7IyYmJk2JCwCiKCIqKgorV640UGTM3HCuMWPgPJMPnyFnQEJCAgoVKpSk2SGt8uXLh5cvX8LS0lKPkTFzw7nGjIHzTF58hpwB+/fvz1DiAsC7d+8QEBCgp4iYueJcY8bAeSYvLsgZEBgYCAsLiwxtQ61WIzAwUE8RMXPFucaMgfNMXlyQMyAyMhKCIGRoGyqVChEREXqKiJkrzjVmDJxn8uKCnAFZs2ZFRm/BazSaDH8AmPnTR66Jogh7e3s9RcTMzbt37/DkyRNoNJoMbYfzLP0ydm0ikytTpkyGk5eIMHPmTOzZsweNGzdGkyZNUL9+fWTLlk1PUTJTR0SIj4/PcK5ptVqUKVNGT1ExUxceHo7Tp0/j2LFjOHbsGG7duqWX7XKepR93WWeAPjoS7e3t0bp1a5w8eRJv3rwB8OkeTI0aNaQC/fPPP8PGxkZfYTMTERMTg82bN8Pd3R23b9/O8PbUajU8PT3h5OSELFmy6CFCZkpiY2Px77//SgX40qVL0gQuBwcHNGnSBA0aNMCkSZMQGhqa7tfhLusMIJYhU6dOJbVaTQDS9W/ixIlERCSKIt25c4eWLl1K7du3p+zZs0s/Y2NjQ7/88gvNmjWLLly4QBqNRua9Zob08uVL+v333yl37twEgOzt7Wn06NE0cuTIDOWalZUVAaDcuXPT77//Ti9fvpR7V5kBaTQaunDhAs2aNYuaNGlCNjY2Ui5kz56dOnToQEuXLqU7d+6QKIpERPThwweqXLlyunNMpVKRm5ubvDtuwrggZ9CrV6/Izs4u3Qns4OBAe/bsSbZdjUZDFy9epNmzZ9Mvv/yS7MPUvn17cnd3p9u3b0sfJmba/v33X+revTtZWFgQAPr+++9p6dKlFB4eTkSfci1r1qykUqnSfJC0t7enwMBAcnd3p5IlSxIAsrCwoB49etD58+dl3nOmD6Io0u3bt8nd3Z3atWuX7Et906ZNafbs2XTx4sUUv9Tv3r2bChYsSABIrVaTIAhpyjNBEMje3p5evXolw96bBy7IevDrr7+m+QCpVqtp/Pjx0oemR48e9O7duy++RkxMDJ04cYL++OMP+vnnn5OcKTk4OFDPnj1p9erV9PTpU+PtOMuw+Ph42rJlC9WsWVN6P3/55Rfau3cvabXaZD9/4sQJsrCwSHVRVqlUZGFhQSdPnpS2odVqae/evdSkSRPp52rWrElbtmyh+Ph4Y+4+y6CnT5/S6tWrqUePHpQ/f37p/VSr1VS7dm36448/6MSJExQbG/vFbbx79466d+8ufdlfs2YNHT9+PE15psu1xHnG0o4LcgZdvnyZrKysqECBApQ1a9ZvXlLUna3oEvfVq1fUrl07AkB58uShv//+O1VnvOHh4bRv3z769ddfqVKlSkleo0SJEjR48GDaunUrvX371tB/ApYOwcHBNHPmTOmMxMbGhgYPHky3bt365u+eOHGC7O3t05xrKbl16xYNHjxYugJTqFAh+uuvvyg4OFifu8v05O3bt/T333/T4MGDqUSJEkne7x9//JF+/fVX2rdvn3RV5WtEUaQtW7ZQnjx5CAC1b98+ydltavNMEAQSBIEsLS3p8uXLhtx9s8cFOQNCQ0OpWLFiZG1tTVeuXKFXr16Rm5sb5c2bV/qWamlpKSV0vnz5yM3NLdklHVEU6e+//5Y+GO3atUvz/b13797Rtm3baMiQIdIlSd2/ihUr0ujRo2nv3r0UFhamzz8BS6ObN2/SwIEDkxTA2bNnU0hISJq283muJT4z+lqufUlwcDDNmjWLChUqJH1BGDhwIN28eTM9u8n0JCwsjPbs2UOjR4+mihUrJnmvS5YsSUOGDKFt27Z99epaSl6+fElt27YlAJQ3b17aunVriicCqT2mHThwgKysrKh48eIUGhqqr93PdLggp5NWq6U2bdoQAPL29k7y/+Lj42nXrl00Z84cmjx5Ms2ZM4d27dr1zcuB7969o549e0qXjlatWpXu+8PPnj2jtWvXUq9evcjBwSHJAbtWrVo0efJkOn78OMXExKRr+yz1NBoN7d69mxo3biy9Dz///DNt3bo1w5eIdbmWL18+ypMnT6pz7Wvb27p1K9WqVUuKtXHjxrR7925uJjSCmJgYOnbsGE2ePJlq1aqV7NZUr169aO3atfTs2bN0bV8URVq1ahVly5aNAFDPnj1TdTUkNcc0Ly8vAkBt27ZN8XYL+zYuyOk0e/ZsAkBOTk56b6ras2ePdCmzSZMm9OTJkwxtT9fB7eHhQR06dEjW7NGkSROpgzshIUFPe8HCwsJo8eLF0qVFCwsL6tmzJ124cEHvr1WuXDkqV66cXrd54cIF6tmzp9RkVqJECVqyZAlfZdGjhIQEOn/+fIqd0Dly5KAOHTqQh4cH3b17N8PHmcePH0t9A4UKFaK9e/fqaS8+EUWR+vTpQwBozpw5et12ZsEFOR1OnDhBKpWKKlSoQJGRkQZ5jQ8fPtDgwYMJANna2tKSJUv0doaSuIO7adOmlCVLFukgkD17dmrXrh13cGfAw4cPydXVlezt7aXegMmTJxu0+9QQBVnn5cuXNHnyZOmWir29Pbm6utLDhw8N8nrm7PNOaN2ZKgDKkiULNW3alObMmfPFTuj00Gg0tHjxYrK1tSUANHjwYPr48aNetv25yMhIKl++PKlUKjpx4oRBXsOccUFOo6CgIMqfP7/0GImhHTt2jIoXLy5d5rx7967eXyM2Nlbq4K5du3aSy2T58+enHj16cAf3N4iiSEePHqU2bdpIj4tUqlSJ1qxZQ9HR0QZ/fUMWZJ3o6GhavXq1dC9TEARq27YtHT16lL+4fcW3OqGnTJnyzU7o9Lp79y79/PPP0hWOY8eO6f01PhcYGEhZs2al/PnzU1BQkMFfz5xwQU6DhIQEqlevHgGg7du3G+11IyMjafTo0SQIAllZWdFff/1l0MdTEndw//jjj8k6uAcNGkR///03d3DTpyK1cuVKqlChglSk2rdvT8ePHzdqkTJGQdYRRZGOHz9O7du3l758VKhQgVatWmWULx9Kp+uEHjRokPRlOnEn9JgxY1LdCZ1e8fHxNHPmTLKysiJBEOjXX3812NW8lGzbto0AUP369fk2WBpwQU6DCRMmEAAaNWqULK//zz//UNmyZQkA/fTTT3T16lWjvO63OrhHjRpFe/bsyVT3Fl+8eEG//fYb5cqViwBQtmzZ6Ndff6XHjx/LEo8xC3Jijx49otGjR0uX53Pnzk2//fYbvXjxwuixyEXXCT1q1Cjpi5nu3/fff5/uTuj0unr1Kv30008EgMqWLUv//vuvUV73c66urgT8/zRC9m1ckFNp165d0mXjuLg42eKIjY2lP/74gywsLEitVtPvv/9u9E7pb3Vw//7773Ts2DGz7OD+999/qVu3btJl/c+naclFroKsEx4eTkuXLqXvv/9eamDr3r27bMXAkHSd0L///jvVrFkzyS2eAgUKZLgTOiNx/fbbb6RWq8nCwoL++OMPg1wGT624uDipW3/37t2yxWFKuCCnwqNHjyh79uyUJ08eev78udzhEBHRtWvXpJmzZcqUoXPnzskShyiKdPfuXamDO0eOHCl2cJ8/f95kL13FxcXR5s2bqUaNGtK+/fLLL7Rv3z7FPN4hd0HW0U0B++WXX6S/VY0aNWjz5s2yfpHNCF0n9F9//UWNGzcma2trg3VCp9e5c+eoTJkyBICqVKlC169flyWOzz1//pxy585N2bNnl+3qkSnhgvwN0dHR9NNPP5EgCHTo0CG5w0kiPj6eZs+eTdbW1iQIArm6uhr1PlFKNBoNXbp0iebMmZOsgztbtmxSB/etW7cU3wj07t07mjlzJhUoUED6gjFkyBC6ffu23KElo5SCnNjnU8AKFixIM2fONNql2/QSRZFu3bpFS5Ys+Won9KVLl2R/NjsiIoJcXV1JEASytram2bNnK+6L78GDB0kQBKpcubJZXjXTJy7I3zBo0CACQNOmTZM7lC+6d+8e1a5dmwBQsWLF6MiRI3KHJImNjaWTJ0/SlClTvtrBndFnrfXpxo0bNGDAAOlMqHDhwumapmVMSizIOiEhITR79mxpCpi1tbXipoA9efKEVq1alawT2sLCQuqEPnnypKyXgD935MgRKlasGAGgOnXqGOWpj/Ryc3OTHrliX8YF+SvWrVtHAKhZs2ayfxP+Fo1GQ0uXLpVWnho4cCB9+PBB7rCS0XVwjxkzJlkHd/HixaUO7jdv3hg1Lo1GQ7t27aJGjRolmaa1bds2k1hwQckFWUc3BUz3GA4AatSoEe3atcvon683b97Qli1bvtoJvX//ftl7A1Ly4cMHGjBgAAEgOzs7Wrp0qWJunXyJRqOhZs2aEQDy8fGROxzF4oL8BTdu3KAsWbJQ4cKFTWrQ/tOnT6X7dwULFlR8M4Wug3vo0KFSQ5DuX4UKFaQObkMNMvj48SMtWrQoyTStXr160cWLFw3yeoZiCgU5sZSmgC1evNhgnfofP36k3bt3f7ETeujQobR9+3bFX07ftWuXdAuladOmJjUb4N27d1S4cGHKkiWLoq6OKAkX5BR8/PiRfvjhB7KwsDDJLlFRFGnNmjXSiMzu3bsr/kCj899//0kd3LoDj66Du2bNmnrr4H7w4AG5uLhQ1qxZpWlaf/zxh8mu5WpqBVnn1atX9Mcff0hTwLJmzaqXKWAxMTF09OjRL3ZC9+7dm9atW0f//fefnvbEsN69e0fdunWTGsnWrl2r+B6MlPzzzz9kYWFBP/zwQ6Z6TDK1uCB/RhRF6ty5MwEgd3d3ucPJkFevXlH79u2lgrNlyxaT+hB/rYPb2tqaGjduTH/99VeqO7hFUaQjR44kmab1448/0tq1a02+2cRUC7JOTEwMrVmzRlpKVBAEatOmTaqngH2rE7pjx46yd0KnhyiKtHnzZsqdOzcBoA4dOpjsl0adJUuWEADq0qWLSb0XxsAF+TOLFy8mANS1a1ezSBZRFGnr1q3S8mlt27ZN89KOSvGtDu62bdvSkiVLknVwR0VF0cqVK6l8+fLSwb5Dhw504sQJs3iPiUy/IOuIokgnTpygDh06JJkCtnLlyiRTwBJ3Qrdt2zZZJ3SzZs0U0wmdXi9fvpRWlMubNy9t27bNLPJVFEVydHQkALRkyRK5w1EULsiJnD17liwsLKh06dKKbObIiODgYOrVq5dUvFauXGnyH+7PO7h19yOBT+u0tmvXjlq2bCldupd7mpYhmUtBTuzx48f066+/SsU2R44c1LJlS2rXrh3ly5cvSSd0nTp1FNkJnR6iKNLKlSul/e7Vq5dJ9bGkRlhYGJUqVYosLCxkm6GgRFyQ/+ft27dUqFAhsrW1pVu3bskdjsHs3btXevykcePGZlWcdB3c3bt3T3J5WzfSsW/fvrRlyxajd3AbgzkWZF0ndJ8+faQRpYkvQ3fv3l2xndDp9fjxY2nd7EKFCtG+ffvkDslgbt68SVmyZKFChQqZTI+LoXFBpk+XQnWdyRs2bJA7HIP7+PEjDRkyhIBPSzsuXrzYZC/r6eimaVWvXl06aDdo0IAmTZpEQ4YMSbGD29XVlXbv3m2wDm5jMoeCrOuEdnV1lW4vfD4TetKkSdSwYUOzmQKm8/kSiUOGDDGLvPyWDRs2SB3jpn4M0gcuyEQ0ZcoUAkBDhw6VOxSjOnbsmPS4j6GWdjS0d+/e0YwZM6SO7CxZstDQoUPpzp07yX72v//+o3Xr1lHv3r2TdHCrVCqpg/vo0aMm2eBligU5Ojqajh49Sr/99hvVqFGDVCpVqjuhb9++TUOGDJH6CAoUKGASU8BScufOHWnmc4kSJej48eNyh2RUupODqVOnyh2K7DJ9QQ4ICJDmv5rigTijIiMj6ddff5WWdpw5c6ZJDMJIaZrWnDlz6P3796n6fV0H97Jly6hjx45f7OD+999/FTeKMCWmUJATEhLo33//pZkzZ36xE3rZsmV07969VPc3hISE0Jw5c6hw4cLSezdgwAC6ceOGgfcm4+Lj42nGjBlkZWVFKpWKxowZQ1FRUXKHZXQxMTFUpUoVEgSBDhw4IHc4ssrUBfm///6jXLlyUY4cORQ1ulEO//77ryxLO6aFRqOhnTt3JrlkWbt2bdq+fXuGi6aug3vu3LnUrFmzL3Zw37x5U5HNcEosyKIo0s2bN2nx4sVf7ISeO3cuXb58OcOXK+Pj42nbtm3SCFk5p4ClxpUrV6RJdeXKlaPz58/LHZKsnjx5Qjly5KDcuXObzLPhhpBpC3JsbKy0es+ePXvkDkcRPl/a8bffflPEVQPdNC3diENLS0vq3bs3Xbp0yWCvmbiDu06dOsk6uLt3706rVq1STFOcUgry48ePaeXKldS9e/cUO6GnTp1q8E7oixcvUq9evcjS0lK6DLxo0SJF3JONiYmhSZMmSUskTpkyxeS7wvVl9+7dBIBq1qxp8j0B6ZVpC/LIkSMJAE2aNEnuUBTn+vXrVKVKFQJApUuXprNnz8oSx+fTtPLmzUtTpkyhoKAgo8cSHh5O+/fvpzFjxkiLv+v+FStWjAYOHEhbtmyh169fGz02IvkK8uvXr2nz5s00cOBAaaED3b+ffvqJxo4dK1sndFBQEE2ZMiXJFDAXFxd68OCB0WMh+vRYZenSpQkAVa1aVTFLJCrJxIkTCQC5uLjIHYosMmVB/vvvvwkANWzY0CTuD8ohISGB5syZk2Rpx4iICIO/riiKdPjwYWrdurWip2kFBwfT9u3bU5zBXb58eaN3cBurIH+tE/qHH36QZkIr6bnZmJgYWrt2rXSJWBAEat26NR05csQotx8iIiLIxcVFWiJxzpw5fNz5goSEBGrQoAEBoK1bt8odjtFluoJ89+5dsrOzIwcHB9nOZkxJYGAg1alTRzoTNNTSjlFRUeTt7Z1smtbJkycVec/2c1/r4K5Rowb99ttvdPTo0STTpvTJUAU5I53QSpPSFLDy5cuTt7e3wZqpDh8+LF05qFu3rqKXSFSK169fk4ODA2XNmpXu3bsndzhGlakKckREBJUtW5bUajWdOnVK7nBMhlarJQ8PD2lpxwEDBuhtacfnz5/TxIkTpcEP2bJlozFjxph0k50oinTv3r0vdnA3atSIZs6cqdcObn0V5MSd0I0aNdJLJ7QSfT4FLFeuXDRp0iR68eKFXrb/+RKJy5YtU/wSiUpy8uRJUqlUVK5cOYqMjJQ7HKPJNAVZFEVpdOTcuXPlDsckPX36lJo2bSqdHe3atStd2xFFkc6dO0ddu3aVVuH54YcfyMPDw6ymLuloNBq6fPlyih3c9vb21KZNG1q8eHGGOrjTW5ATd0K3adOG7O3tDdYJrUTh4eHk4eFBP/zwAwGfVhXr2rUr/fPPP+l+L3bu3CldJWnWrBk9e/ZMz1FnDnPmzJFGh5ryl7+0yDQFefny5QSA2rdvn2neXEMQRZHWrl0rnfV169Yt1cMY4uLiaNOmTVStWjXpoN+sWTPav39/pjp7iI2NpVOnTtHUqVO/2MG9cuXKNHVwp6Ug6zqhu3XrJi068nkn9KlTpzJV969Wq6V9+/ZJXzgBUPXq1WnTpk2p7vh9+/Ytde3aVbqasG7dOj7WZIBWq6V27doRAFqxYoXc4RhFpijIFy9eJCsrKypevLjeLrVmdkFBQdShQwdpTvTmzZu/ePB5+/YtTZ8+PVXTtDKj8PBwCggIoLFjx6bYwT1gwADavHnzV3sevlaQdZ3QAwYM+GIndEBAgFGa9kzBnTt3aOjQoUmmgM2YMeOLXzxFUaRNmzZJSyR27NhRlicBzFFoaCgVL16crKysDPqYo1KYfUF+//49FS1alKytrRU57MKUiaJI27Ztk86y2rRpk+Qe3PXr16l///7SfcjvvvsuTdO0MitdB7ezs7N0KfXzDu5du3Yl6eBOXJA/fPhAu3btIhcXFypXrlyyTmhnZ2fy9fVVVCe0Er1//z7ZFLD+/fsneVzpxYsX1Lp1a+nqxvbt2/msWM+uXLlC1tbWVLRoUbM/dph1QdZqtdSqVSsCQKtWrZI7HLMVHBxMvXv3lpqyhg0bRvXr15eKQJ06dfQyTSuzev78Oa1bt4769OlDBQsWTNbBPW7cOMqXLx/lzp07WSd0wYIFqU+fPuTj40PPnz+Xe1dMUkJCAm3fvj3JFLCGDRvSsGHDpHvuvXv3ppCQELlDNVsrV64kANS6dWuzvr1l1gX5r7/+IgDUt29f/tZqYB8/fqSBAwdKTVqCIFD79u0zxWUmYxJFkW7dukVjx46lcuXKJbn/rLsPXK5cORo3bhzdunWL817PLl26RO3bt5cem1Kr1TRo0CBFTAEzZ6IokpOTEwGgWbNmyR2OwZhtQT527BipVCqqWLFiphzYbiz379+nkSNHSo9E5c6dm6pWrSrdK160aJFZducak1arpRs3bnyxE7pWrVpkZ2dHWbJk+WoHtzmfWRiDRqOhhQsXSn/jKlWqJJkCNnLkSNmmgGUGkZGRVKFCBVKpVGa7IpZZFuSXL19Svnz5yN7enu7fvy93OGZHFEU6dOiQdDtA1xy0bt06aZrW8ePHqWTJkgSAatWqxQ1caSCKIj169OiLndB169ZN1gmtu4f8tQ7uvHnzUrdu3aQObj57Tr3bt29TzZo1CQCVLFmSTpw4QUSfpoCtW7dOmgKmu6x6+PBh/vsaQGBgINnb21O+fPno1atXcoejd2ZXkOPj46lu3boEgHx9feUOx6xERUWRl5eX1CikUqmoY8eOdOrUqRQPPlFRUTRmzBhSqVRkZWVFM2bMMImlHeWQuBO6aNGiae6E/lKXdURExBc7uIsWLZqqDu7MLD4+nqZPny4tkTh27NgUr7iJokgnT56kjh07Svfwy5UrZ9ApYJnV9u3bpcln5nY8MbuCPG7cOAJAo0ePljsUs/H5NK3s2bPT2LFj6enTp6n6/fPnz0tF/Mcff6QrV64YNmAToO9O6NQ+hxwcHEy+vr4pdnCXK1eOXFxcaNeuXfx4IBFdvnyZKlWqJHW3p3aJxCdPntCYMWMoe/bs0hSwiRMnclOdHo0aNYoA0Pjx4+UORa/MqiDv2LGDANDPP/+caZfv0hfdNC1HR0epUatUqVK0bNmydD2vGhsbS1OmTJGWdpw0aZKiFoswtOjoaDpy5AhNmjSJqlevrvdO6PRO6nr+/Dn5+Pik2MFdvXp1mjRpEh05csRgM7iVKDo6miZOnCgtkTh16tR0DUmJiIigZcuWUalSpZJMATt37hxfzs6guLg4+vnnnwkA7dy5U+5w9MZsCvLDhw8pW7ZslCdPHr3No82M4uLiaOPGjcmmaQUEBOilKej69etS01epUqXozJkzeohaeRISEuiff/6hGTNmUMOGDcnKykr6e+bMmZM6depEnp6eFBgYqJeDsz5mWetmcHt6elKnTp0oZ86cyWZwz5gxg/755x+zfYTtzJkzUgGtWrUq3bhxI8Pb1Gq1tH//fmrWrJn096xWrVqapoCx5J4/f0558uShbNmy0aNHj+QORy/MoiBHR0fTjz/+SIIg0OHDh+UOxyTppmk5ODgQALK1tSVnZ2e6e/eu3l8rISGB5s6dKy3tOHLkSJOfEqXrhF60aBG1bt06SSe0ra0tNW/enObNm0dXrlwxSNe5IVZ70s3gnjdvHjVv3pxsbW2TdXAvWrSIbty4YfId3BERETRy5EgSBIFsbGxo7ty5BvnSkdIUsOnTp9Pbt2/1/lqZwaFDh0gQBPrpp5/M4iqOWRRk3aoqf/75p9yhmJxr165Rv379kkzTmjt3rlEm4ty/f19qwCtatKhJfZnSdUJ7e3tT165dU+yEdnNzo9OnTxvlLMgY6yHHxcVJHdx169ZNsYPb29ubHj16ZFKXZA8dOiQ10tWtW9coT2a8f/+e5s6dS999990Xp4Cx1Jk2bRoBoIEDB8odSoaZfEFes2YNAaDmzZub/Ld0Y9FoNLRjxw5pIXDdgcjX19folyK1Wi0tW7ZMeo65f//+FBoaatQYUisoKIg2bdpE/fv3T9IJLQgCVa5cmcaNGyfbTGhjFOTPJe7grly5sjQsI3EH96ZNmxQ71zk0NJT69esnPUcsxxKJuilgujXHAVCDBg1o586d/Px+Kmm1WmrevDkBoLVr18odToaYdEG+fv062djY0HfffcdzeVPhw4cPtHDhQmmBAUtLS+rTpw9dvnxZ7tDo2bNn0j02BwcHRTRqfPjwgXbu3EkjR45M1gldqlQpGjZsGPn6+ipiZKIcBflzISEh3+zg3rlzpyI6uHfs2CHdnmnevLkilki8fPky9enThywtLQkAFS9enBYuXMhTwFIhODiYChcuTDY2NiZ9lcFkC/LHjx/p+++/J0tLy1Q/jpBZ3b9/n0aMGCGdhebLl4+mTp2quGdPRVGkdevWSUs7du3a1aj31qKioujw4cM0ceLEZJ3QhQoVIicnJ8XOhFZCQf6cEju437x5Q46OjgR8WiLRx8dHcZfXg4KCaOrUqZQvXz4CQHZ2djRy5EgecvQN//77L1laWtL3339vsl9iTLIgi6JInTp1IgDk4eEhdziKlNI0rcqVK5OPj4/i17kNCgqijh07SqM4N23aZJCDZnx8PJ07d85ondCGpMSCnJgoihQYGJhiB7eVlRU1bNhQ6uA2xLAHURRp48aN0rP0nTp1UtwX0s/FxMSQj49PkoEurVq1okOHDik+H+WydOlS6f01xb+RSRbkhQsXEgDq1q2bSf7RDUk3Tats2bLS2UinTp2+OE1LqURRpO3bt0tnCa1bt87w42xarZauX78udUJnzZrVqJ3QhqT0gvw5jUZDV65c+WIHd+vWrfXWwf38+fMkSySa2gQ/URTp1KlT1KlTpyRTwLy8vHgK2GdEUaSuXbsSAFq0aJHc4aSZyRXkM2fOkFqtptKlS1N4eLjc4SjGf//9RxMmTJDOPNI6TUupQkJCkizt6O3tneoDtCiK9PDhQ8V0QhuSqRXkz8XFxdHp06fJzc0txQ7url27prmDW6vVkpeXl/QIWp8+fRRxvz8jnj59SmPHjpWmgOXMmZOngH0mPDycSpcuTRYWFnT27Fm5w0kTkyrIb9++pYIFC5KtrS3dvn1b7nBkJ4oinT17Ntk0LU9PT5N/rvdz+/fvlxaKb9iw4RcHASTuhC5SpEiKndAHDhwwu7+PqRfkz+k6uMeNG5esg7tIkSLUv3//r3ZwP3r0iBo2bEgAqHDhwrR//34j74FhpTQFzNHRkc6ePWtSV8IM5datW2Rra0sFCxY0qWe8TaYgazQaaty4MQGgTZs2yR2OrOLi4mjDhg3SxCtdp6i+pmkpVVhYGDk7OxPwadnBhQsXUkhIiNQJrbtM/3kntJ+fn8mfGX2LuRXkz+k6uIcNGyYVId2/smXL0siRI2nnzp0UEhKSZIlEZ2dnCgsLkzt8g9FqtRQQEJBsCtjGjRtN/qpPRm3YsIEAUJMmTUzmFpTJFOQ//vhD+oBlVm/fvqU///zTKNO0lCoqKormz58vdWIn/pe4EzqzjU8194L8OV0Ht5OTExUqVChZLuTIkYPmz5+fqe6x3r17l5ydnaX78Q4ODvTnn3+a1Bmivg0dOpQA0JQpU+QOJVVMoiDv379fmi2bmRYk0Ll69Sr17dtX6gIuUqQIzZs3T7EDNPRJ1wk9ffp0atCgQZJOaBsbG+lynaura6Y+I8hsBTmx2NhYcnFxkRqedHmRuIN7+vTpdO7cObNbri8ln08Bs7Kyon79+tG1a9fkDs3oYmJiqEqVKgSAAgIC5A7nmxRfkJ89e0Y5c+aknDlzmnyDUlpoNBry9/en+vXryz5Ny5h0ndALFy6kVq1aJeuEbtGihdQJrdVq6cKFC1S+fHkCQJUqVVLEkBM5ZNaCfOnSpSRLJF64cIG0Wu0XO7izZs1KrVu3poULF9L169fN+hZPQkIC+fr6SuNpAVD9+vVpx44dJnMJVx+ePHlCOXLkoFy5ciliAMzXKLogx8bGUvXq1QkA7d27V+5wjOLDhw+0YMECRU7TMgRdJ7SXlxc5OjpSnjx5pIOHpaUl1atX75ud0LGxsTR16lRpaceJEyeaxaD5tMhsBTk6OpomTJhAKpWKLCwsyM3N7Yv58bUO7jx58lDXrl3Jy8uLHj58aLYNUZ9PAStWrBgtWLBAEVPTjGHPnj0EgGrUqKHoOQyKLsjDhw8nAPTbb7/JHYrBBQYG0vDhw5NM03Jzc1P88IL0CAoKoo0bN1K/fv2+2gkdGRmZpu3euHEjUyztmJLMVJBPnz4tjeasVq0a3bx5M02/HxERQQcOHEh3B7cpe/36dbIpYCNGjMgUU8AmTZpEAGjEiBFyh/JFii3ImzdvJgDUqFEjs71EK4oiHTx4kFq2bGly07TSIjQ0lHbs2GGUTuiEhASaN28e2djYSEs7Zobn1TNDQQ4PD6cRI0ZI94nnzZunl2NDSEgI+fn5fbOD25x6NmJjY8nHx4cqV64s7WvLli3NegpYQkKC9Cjcli1b5A4nRYosyHfu3CE7OzsqUKCAWZ4hRkZG0ooVK6hMmTLSNK3OnTvT6dOnzeLDEBUVRYcOHaKJEydStWrVUpwJvX79eoN2Qt+/f5/q1asnnfUcOnTIYK+lBOZekA8dOiRdTalXr55Bz+hevHhB69evT9bBrVKpqFq1ajRx4kQ6fPiwWXRwpzQFrGzZsrRixYo0X6EyBa9fvyYHBweys7NT5NMpiivIERERVLZsWVKr1XTq1Cm5w9Gr//77j8aPHy89spMjRw4aN26cyTerxcfH09mzZ1PshM6VKxd17tyZli9fTvfv3zfqFw6tVkuenp5SY1i/fv3M6iwnMXMtyJ8vkbh8+XKjNmLpZnAvX76cOnfuLM3C1nUvN2jQwGw6uJ8+fUrjxo1LMgVswoQJ9N9//8kdml6dOnWK1Go1lS1bVnEDghRVkEVRpO7duxMAmjdvntzh6IUoinTmzBnq0qWL9A20dOnStHz5csUlQ2pptVq6du3aVzuh58+fT1evXlVEF+uzZ8+k9VIdHBxox44dcoekd+ZYkP39/aVn7lu0aKGIwpC4g7tFixbJOrhbtWpl8h3cERER5OnpSaVLl5YeK+zSpQudOXPGLK7gERHNnTuXAFCPHj0UtU+KKsienp4EgDp06KCoP1J6xMbG0oYNG6Rn4HQHlQMHDpjkB/XRo0df7YSeNm2aomdCi6JIPj4+0qxvR0dHevPmjdxh6Y05FeQ3b95Qly5dpLO09evXK/Z4kLiDu169elIXs66D29HRkby8vL446lXJtFotHThwQPoyq5sFsWHDBsV+zlNLFEVq3749AaDly5fLHY5EMQX52bNnZGVlRSVKlDCLVnzdlwtbW1saNmwY3bt3T+6QMkTXeCYIAlWpUoXGjx+frk5oub1+/VpaurNu3bpyh6M35lSQdc/Ndu7c2eR6SCIjI6UO7ipVqkgd3K1atZI7tAy5e/cuDRs2TLoi4OnpKXdIGfbhwwcqXrw4WVlZKeLqCxGRQEQEPSAivHjxQh+byrDvvvsOgiBkaBu8P4aT0f0xp30BeH9S+n0AGY4D4Fz7HO+P4ehjfyz0FAtEUYS7uztq1KiRpt8jIkRHR+PDhw9ISEiAnZ0dcuTIASsrq3TFcenSJcydOxdqtTpdv6+T3v3RiY+Px9u3b2FpaYn8+fOn+41Swv4QEcLDwxEWFgYiQtasWWFvbw9LS8s075c+9iej701GaTQaPHz4EJGRkbK/NykJDw9HaGgo8uTJg6xZs6b69/SZa0uXLkX16tXT9ftEhNjYWHz48AFxcXHInj07cubMmeZcu3z5MubMmaOXXKtcuTI+fvyIyMhIWFpaInv27LCzs4NKpUr3ttNCn+/NkiVLULBgQeTIkQP29vZ6ijBt9H1cy58/P/Lly4csWbLoKcK00df+6K0gA0DlypXRrVu3b/4cESEuLg6nTp3Ctm3bcP78ebx79w4ajQZZsmRBiRIl0KZNGzg5OaFgwYJp+iBqtVro6aQ/1fuTmCiKCAgIwNKlSxEYGAhLS0u0bdsWCxYsQPbs2dMcg5z7Q0S4c+cOlixZgpMnTyI0NBREBDs7OxQqVAgVK1ZE/fr10aBBAxQpUiRV75O+9ic9740+EBHmz5+PpUuX4s8//5Q11z4XFxeHZcuWwdvbG+/evUPhwoUxY8YMdOjQwajvDQD89NNPac61yMhInDt3Drt27cL58+cRFBSEhIQEZM+eHfXr18dvv/2GMmXKpPp4oK/9qVChAlatWoWHDx8iOjoaFhYWyJUrFypWrIimTZvil19+QbFixaBWq/VyVp8Sfb435cuXx2+//Ybx48dj0KBBetlmWulzf8qUKYPJkyfD1dUVkydPNth78DX62h+9FuTUEEURx44dg5ubGy5duoT8+fOjdu3aqFChAuzs7PDmzRtcuHAB06dPh4eHB/766y/07dvXaN9EM0Kj0eD333/H4sWLUapUKYwaNQpv377F6tWrce/ePRw/fjzdZ/7GptVq4enpiSlTpsDS0hItWrRAhQoVoFKpEBQUhMDAQBw9ehQbN26Evb09evfujenTpyNbtmxyh25Qr169wpQpU/DLL78gV65ccocjiYqKQo8ePbB//340b94cgwYNwvbt29GtWzfs3LkTrVq1kuVA9S1EhNevX2Pr1q1Yu3YtHjx4gLx586J69ero0KEDsmbNigcPHmDnzp3Yv38/Nm3ahBYtWhh1XywtLaFWq9G9e3cUKlQI0dHRePDgAa5cuYL9+/fD2toaderUwcCBA9GiRQvY2toq8m+tY21tDVtbW6xYsQLjxo1TdKypkSVLFpQpUwZz5szB2LFjZTtL1gt93YzWaDS0cePGL/5/URTpw4cPNGTIELK0tKQffviBVq5cSW/fviWtVit1UYqiSHFxcXT+/Hlq1KgRqVQqmjJlSqq7LDdv3qyX6T3f2p/PxcfHU79+/UgQBBo2bBh9/PiRRFEkURTp77//JkEQaMKECWnuFpVjf+Li4mjYsGGkUqmobdu29PjxY2lfiD69RxqNhkJDQ+nMmTM0cOBAsrS0pJ9//vmbTV762J+0vjf6IooiNW7cmLJkyULBwcGy5drnYmNjqWnTpmRhYUEeHh4UHx9PoihSWFgYVaxYkbJly5aqRklj7Y8oihQfH0/Xr1+n0aNHU4ECBcja2poaNWpEmzZtojdv3iQ7Jjx8+JAqV65Mtra2dP369VTFoc9c0/1NdfGIokgRERF04cIF+v3336lUqVKkVqupcuXK5Ofnp/fpgvp+b6ZNm0aCIMg2813f+3P37l0SBIH+/PNPWTry9bU/RinIoijS7du3qWLFimRlZUXjxo2j9+/ff/MPFxMTQ/379ydBEGjt2rWp+kPLcZBMSEigQYMGkSAINHXq1GQrqeier7awsEjzozbG3p+YmBjq2bMnqVQqmjBhQqoeb9BqtbR9+3ZSq9XUq1evr75PplyQ//33X+kZeVEUFVGQtVot9e3bl1QqFa1atSrZ3/7Ro0ekVqtpwIAB3/z86Ht/EhISKC4ujmJiYigiIoJev35NFy9epCVLllDjxo3Jzs6OcuTIQT179pQemftajO/evSMHBwcqVqxYqkbLGivXRFGkjx8/0saNG6lSpUqkVqupY8eO9OLFC70VB32/N48ePSIAdPz4cT1El3b63h9RFKlZs2ZkY2Mjy/AfkynIunnNuXLlIgcHBwoICEhTksbHx1O9evXIxsaGXr58+c2fN/ZBUqPR0IgRI0gQBJo8efIXnzEOCQkhCwsL6tevX5r235j7ExERQe3atSOVSkWzZs1K0/PSoijSpEmTSBAEunHjxhd/zlQLslarpbJly1KePHmkLylyF2RRFMnd3V1agD2lvBJFkfr27UsWFhbfPFDpc382bNhADRs2pJ9//pmqVKlCpUuXpvz585ONjQ3Z2tpSlSpVaMaMGfTgwYNU55luzKNKpaIZM2YY5QtGWt4bURQpPDyc5s6dS/b29lS4cGE6efKkXoqyvnNNo9GQhYUF9e3bN8PbTA9DfHaeP39OFhYW1LVrV6OfJetrfwx6Y5aIsGnTJnTo0AGFChXC2bNn03z/x9LSEr6+vhAEAX379tVbI4A+xMfHw8XFBcuXL8fYsWMxffr0L97rzpUrFzp06IAtW7YgLi7OyJF+HREhKCgIrVq1QkBAANzd3TFp0qQ03bcXBAFubm7ImjUrnJ2dFfU+6cM///yDe/fuYfHixYrpA7h8+TLGjRuHVq1awc3NLcXPlSAImDdvHkRRxJw5c4wan6WlJXLlyoXixYujdu3aGDBgALy9vfHvv//i7NmzmDx5Mn744YdU55kgCKhXrx5++eUXzJo1C1FRUQbeg7QRBAH29vYYP348Tp48CTs7O7Rq1Qr+/v6K+zyoVCqUKVMGBw8eVFxs6VW4cGGMGzcOvr6+OHXqlEnul8EKsiiK8PDwwIABA1CrVi2cOHECJUuWTFcDQb58+TBlyhQcO3YMd+7cMUC0KRNFESdOnMC6deuwd+9ePH36FHFxcdBoNHj8+DE6d+4Mb29vjB8/HnPmzPnqgUUQBMycORPx8fHYu3ev0fbhc/TpqghEUURCQgJCQkKwZcsW/Pzzz7h27Rp8fHwwYsSIdL1P1tbWGDt2LM6fP4+QkBADRC8PIsLw4cORK1cudO/eXe5wAABhYWHo0KED8uXLhy1btnz1cYu8efOidu3aWLFiBbRarVHiEwQBAQEB2L17N7Zv3441a9bgr7/+gpOTEypVqoQsWbKkK8cEQYCXlxfi4uKwePFiRR50BUFA5cqVcfr0aVSqVAm9evXCjh07FBWrIAhwdHTEu3fvEB8fL3c4eiEIAqZNm4ZixYqhW7duCAsLkzukNDNIQdZqtZg+fTp+/fVXtG7dGvv27UPu3LnTvT1BEPDrr7/Czs4OI0aMMFpiExFatmyJESNGoHPnzqhSpQrq1auHFi1aoHr16jh9+jTc3d0xe/bsVD1/VqpUKeTOnRuzZs2S5cMpiiKmT5+OAQMGoEOHDmjUqBF++ukn9OvXD/ny5cPx48fRs2fPdHddCoKAUaNGAQA8PDz0GbqsAgMDcevWLcyYMQMWFkZ/MCEZrVaLnj17Ijg4GHv37v3m43SCIGDWrFmIiIjA+fPnjRQlYGFhAbVaDZVKBUEQ9NbNW6xYMdSsWRMLFy402heMtBIEAfny5cPBgwdRuXJl9OrVC6dPn1ZUUe7YsSOICPfv35c7FL2xtrbGrl278PHjRzg6OiIhIUHukNJE7wU5NjYWI0eOxPTp0+Hk5IRt27bBzs4uw9u1trbG6NGjcebMGaOdfanVamzfvh0XLlxAQEAAXF1dkTt3bsTFxaFnz574559/MGLEiDRdcuvbty9u3rwpy2VrQRDg6emJc+fO4c2bN7C1tUW7du2kSzzVqlXL8EEze/bsKFeuHLy9vRV18EkvIsKYMWNgY2ODAQMGGPS1nj9/DlEUvxnPwoULERAQgHnz5uGnn35K1bZr164NW1tbTJ8+3eTfF0EQsHDhQoSHh+P48eNyh/NV2bNnR0BAAIoWLYr27dvj2bNncockKV26NARBwJ49e+QORa8qVqwIDw8PHDt2DK6uror90pYSvRbk2NhYtG/fHitXrsT48eOxatUqWFtb62XbgiBg7NixAIBFixbpZZup0a5dO1SsWBG//PILpk2bhn379uH48ePw8PBA+fLl01zAnJ2dIYoizpw5Y6CIv0wQBFy9ehVXrlzBmTNncODAAXh6eqJDhw56e3ZSdzXj3bt3ZnHZ+uPHjzh8+DAGDx6st1xOSXR0NOrVqwc3NzdoNJoUf4aIcOjQIUyePBkdO3aEq6trqt8zlUqFjh074sSJE1/cvimpWbMmcuTIgSlTpij+C0auXLlw6NAhCIKAVq1aISYmRu6QAPz/Pf7du3fLHYpeCYKAwYMHY9y4cfD29savv/5qMpfl9VqQVSoV3r9/D29vb8yePVvvl/dy5MiBqlWrwsvL65tnEoYgCALUanW6RkbqlCxZEtbW1li+fLmeo0udwoULw97eHtbW1gabLNSpUycAgJ+fn963bWzz5s0DEWHKlCkGHaBgZWWFpk2b4q+//sKIESMQGxub5P8TEf799184OjqibNmy2LhxY5qb7saPH4+EhAT8+++/+g7f6FQqFYYMGYIrV64gMjJS7nC+qWjRovD19cWDBw8wfPhwRXyJEAQBtWvXxp07dxQRjz4JgoDZs2djzJgx8PT0RNeuXREcHKz4/dRrQbayssLx48cxcOBAg0zWEgQBU6dOxcePH/Hw4UO9b98YBEHAzz//jGPHjik+OdIrR44cyJ07N1atWmXS+6jRaLBs2TLUrVsXefLkMehrWVhYwMvLC7/99htWr16Ndu3a4cGDB9BqtYiNjcXff/+NFi1awMHBAYcOHUrXbaAKFSrAxsYGCxcuNMAeGJ+rqytEUcTWrVvlDuWbBEFAkyZNMH78eKxfvx779+9XxGejc+fOiImJQUREhNyh6J1arca8efOwaNEiHD58GLVr11bcffzP6b1qZsuWzaBnEs2aNYNarcaSJUsM9hqGJAgCBg0ahIiICISGhsodjkEIgoA2bdrg1q1bslzJ0Jf9+/cjMjISCxYsMMp4QQsLC8yYMQNeXl64dOkSatWqhXbt2qFBgwZwcnJCxYoVcfLkSTg4OKRr+yqVCo0aNcKRI0dM+n3RKVCgAAoUKIBFixYp+iCrIwgCpk+fjrJly8LJyQnh4eFyh4RGjRoBAK5duyZzJIahUqng6uqKgwcPAgBatGiB6dOnJ7sCpRTKHxD9GSsrK1StWhVbt241iQ9hSlq0aAEAUpKYo/79+0Oj0SiqiSUtiAgTJkyAg4MDqlWrZrTXValUGDRoEP799190794dISEhsLW1hYeHB44cOYJChQplqAt+9OjRiImJwZMnT/QcufHp7hU+ePBAcc8kf4mVlRX8/f0RERGhiOf1CxUqBJVKhV27dmV4W7pHKpVG9/z6P//8gy5dumDGjBlo06YNXr9+rbh4Ta4g6w4qHz9+xJs3b+QOJ11y5coFOzs7+Pj4yB2KweiWEty5c6fMkaTP48eP8eDBA7i5uRl9YRNBEFCmTBl4enrizJkzOHLkCJydnWFra5vhbdevXx+CIGDNmjV6iFR+gwcPBhGZVKdw6dKlMXbsWGzbtg2XLl2SNRaVSoUCBQpkaEAIEeHIkSNwdXXFkiVLFPn8ryAIyJs3L3x8fLBy5UqcP38e9erVw+PHjxVVlE2uIANAmzZtAACbN2+WOZL0EQQBderUwb///quoZNAnGxsb5M6dG9u2bTO5fSQiTJw4EVZWVujbt69scQiCACsrK1hYWOjtkrm1tTVKliyJTZs2mdz7kpKCBQsiZ86ccHd3N5n90Q2wyJs3L3r16iXrYzmCIKBhw4bpLkxEhMWLF6N169bYsWMHJk6ciIYNG+Ldu3cGiDbj1Go1+vfvj0OHDuHjx49o1KgRnj9/LndYEpMsyFmzZkXBggWxevVqk/kQfq5v376Iiooy6/vIDRs2xK1bt+QOJc0iIiKwZ88e9O7dGzY2NnKHo1eCIKB///549eoVoqOj5Q4nw3QTp65evWpSj3PZ2Nhg7dq1ePToEXx8fGQ9jnXq1AkJCQn48OFDmn/3xIkTmDBhAtq2bYtr165hx44dePDgAVq2bKm4EcE6uu7yo0ePIjIyEk2bNk3XvhuCSRZkQRDQo0cPPHz40GSeL/tcs2bNAABHjx6VORLD6dmzJ+Li4vD+/Xu5Q0k13eANrVaLGTNmmPxasSnp3bs3iAgnT56UOxS9GD58OLRaLS5fvix3KGnSsmVLVK1aFWPGjJH12eS6desCQJqnuMXGxqJHjx4oWrQoNm3ahHz58qF169bYsmULrl27hgkTJij2hEkQBPz444/Ys2cPnj9/jg4dOiiilphkQQaAAQMGQBRFk/sQ6uTOnRtZsmTBhg0b5A7FYOrXrw8AOH36tMyRpF5CQgIWLVqEOnXqoECBAnKHYxCFCxeGjY0NvL295Q5FL8qXLw9LS0vZnu1PL5VKhQ0bNiAiIkLWCWp58uSBhYUF/P39U/07RIS//voLwcHB2L59O7JkyQLgU6Fr164dBg4ciGXLluH69esGijrjBEFA3bp14e3tjTNnzmD06NGyP31gsgW5dOnSsLS0hJeXl9yhpIsgCKhZsybOnDmj2G+RGZU7d25YWVlh+/btBtm+KIp6/9utX78ekZGRWLZsmVmeHQOfCkHdunVx/Phxs8g9lUqF6tWrY9++fSa3P2XLlkX79u2xePFi2a4kCYKAkiVL4siRI6n++4WHh2P+/Plo2bIlqlSpkmx77u7uyJ07N7p166boWwmCIMDJyQljxoyBl5cXVq5cKWsOmWxBVqlUqFKlikl+CHWcnJwQERGhyK5EfSlTpgxOnjyp9/coISEBzs7OuHr1ql63+dtvv6FChQqoVKmS3rarRM7OzoiKijLZJxUSEwQBw4cPR1hYmGKbib5EEASsWLECoihi5MiRshzLBEFA27ZtERQUlKoGMyLCtGnTkJCQAC8vrxS/uNra2sLHxwcPHz7E0qVLFX2MFgQBc+bMQbNmzeDq6oqjR4/KFq/JFmRBEDBkyBB8/PhRMTfk06pVq1YAgGPHjskciWHoLl+9e/dO79+StVotAgIC0K5dO70NWNiwYQPev3//xYOMOWnatCkApOkypZLpPkumuD/58+fH8OHD4evrK9vz4Y6OjhBFEY8ePfrmz0ZFRWHFihVo06YNChcu/MWfa9myJZo0aYLJkycr/oufhYUFtm/fjh9++AGdO3fGpUuXZCnKJluQAaB9+/YAYFLPICaWL18+2NraYvXq1XKHYjDt27cHEeHp06d63a6NjQ12796N4OBg9OnTJ8P3fmJjYzFu3Dj8+OOPqF27tp6iVC57e3vkyZMHa9asUfTZS2plz54defLkMcknLwRBwF9//YUsWbKgX79+ssRfqVIlCILwzfnzRIR58+YhPj4e7u7uX/3iKggCNm3aBEEQ0K1bN8WvupQtWzYcOXIEuXPnRvPmzXHixAmjvxcmXZBz5cqFHDlymOxSf7oJMkqfr5oR5cuXBwAEBATofdtVqlTBrFmzsGfPngzd+yEizJw5E2FhYfDx8TH7s2PgU+516NABt2/fVvyBMjUEQUCnTp1w69Ytk9wfOzs7zJgxA2fPnpVl8Q9ra2vkz58ff//991c/R3FxcVi4cCEaNmyIokWLfnO7+fPnh4eHB86cOYPZs2cr/jhXoEABnDx5EgUKFEDr1q3x559/GnVRCpMuyLqZyVeuXDHJDyEADB06FNHR0Xj16pXcoRiEjY0NsmXLZpCJXbqlHhs3bozRo0fj3r176drO8+fPMW/ePLRv3x4//vijnqNUrsGDB0Oj0aT776Y0AwcOhFarxZ07d+QOJc0EQcCIESOQP39+9O3b1+jHM0EQ0LFjR9y/f/+ry396enoiOjoanp6eqfriqnvuvXv37pg2bRqWL18ueyfz1wiCgCJFiuD06dPo2LEjZs2aherVq8PNzQ0PHz40eOwmXZABYMSIEUhISMDt27flDiVdmjZtCkEQkj3+pNFoTGJZuW8RBAHVqlXD1atXDfItU61WY/v27ciWLRtat26d5vvJGo0Gjo6OsLa2xurVqzPF2bHOTz/9BJVKhbVr18odil6Y+v5YWVlh1apVePToEdavX2/0s8khQ4ZAq9V+sVEyPj4e06dPR82aNVGmTJlUb1elUmHdunVo1aoVXF1d8euvvyp2aAjw6ZiVJ08ebNy4EQcPHkSlSpWwaNEiVK9eHYMHD8aTJ08M9t6YfEGuWrUqLCwssGzZMrlDSRc7OzsUK1Ys2WX3AwcOoGbNmmZRlDt16oTIyEiDDT/IlSsXdu3ahVevXqFbt25ISEhI1e/pLlVfunQJ3t7eyJUrl0HiUypLS0v88MMP2L59u+IvJaaGhYUFSpcuDT8/P5Pdn9atW6N69eoYPXq00VeDqlChAqytraU1wBMjIri7uyM8PBwrV65M8xdXGxsbbN++HS4uLti0aZOiC7KOWq1G48aNsXPnTvzzzz9wcnKCn58fatWqBX9/f4PkmMkXZAsLC1SrVs1gfyBDEwQBo0aNwvPnzxEcHAzg/x+6f/XqVbrWvVUa3VQyQ13F0K0xvWTJEhw6dAgjRoz4Zlc3EWHnzp2YOXMmevbsie7du2eqs2Pg09+tb9++eP36tayTovQl8f6Y6lhQlUqFLVu2IDo6GiNGjDDqMU2tVqNVq1bYv39/sqlVYWFh+PPPP9GgQQNUrFgxXdu3sbHBokWLcObMGWTLlk0fIRuFWq1GpUqV4O7ujnPnzqFEiRLo2bOnQebBm3xBFgQBY8aMwcePHxU1JDwt+vbtC5VKhfnz54OI8PHjR1y6dAmDBg0yiyJRrFgxCIJg0G54QRAwbNgwTJo0CatXr5buzaeEiLB371706tULVatWxerVq42+opNS9OjRA0RkUtPUvqZ79+4AgFOnTskcSfqVLFkSY8aMwZYtWwzyDP+XCIKAmTNnIi4uDuvWrZNel4gwdOhQxMfHZ7jpUaVSoVy5cvoK2agEQUCFChVw5MgR1KlTB4MGDcL58+f1+v6YxVGodevWUKlU8PT0lDuUdMmePTsaN24MT09PhIeHY9q0aQCACRMmyBuYnlhYWCBv3rzYu3evQV9HEATMmDEDU6ZMwfr169G0aVNcuHABGo1GWqs1LCwMs2bNgqOjI8qXL4+AgABp7F9mVKRIEbMao6kbC7py5Uq5Q0k3XR4XL14c3bp1M+rgoLJly6JKlSqYOHEiQkJCQERYs2YNfH198dtvv6Wqs9rc2dvbY9euXShQoAA6dOig1zkYZlGQs2TJgooVKyb5VmdKdNN6EhIS0L59eyxfvhzdunVD3rx55Q5NL3SPd92/f9/g749arYabmxs2bNiAZ8+eoVGjRmjRogXGjx+P4cOHo0aNGpg2bRo6duyIo0ePInfu3AaNR+kEQUCtWrVknU6kT7rbF6Y+FtTa2hq7du3Cx48f0bNnT6N1JguCgC1btiAhIQGNGzfG4MGDMWzYMPzyyy+YMmWKWVyx04fs2bNj3759+PjxI3r06KG398csCrIgCPjtt99gY2ODqKgoucNJl5IlS2L58uV4+vQp6tevD29vb7NKfkdHR+TNmxexsbEGfy2VSoUePXrg0qVLmDhxIsLCwvD333/jwIED+P777+Hv749NmzYhR44cBo9F6QRBgLOzM3LkyGGy910T003wy5Ejh8nfF69QoQIWLlyIa9eu4ePHj0Z73VKlSmHXrl1QqVQ4fPgwBg0ahJ07d8LS0tJoMZiC8uXLY9GiRbh586be3h8LvWzlf65cuaLPzaVJfHw8xo4di8DAQL0VMmPvj42NDcaNGwc7Ozvs3r0bAHD16lV069ZNL9uX8/2JjY3F2LFjcefOHb28P6ndl5IlS8LZ2RkRERFQq9XIli0bwsPDsXXr1gzHYG7vzb179/T22dHnjPG0io2NxZgxY/S2P3K+N9mzZ8eIESPw5MkTox/XRowYgdjYWOTMmVPvcwTM5bNjb2+PkSNH6u39EUhP13WISDHzSh0cHDL8x+H9MZyM7o857QvA+2NInGtJ8f4Yjj72R28FmTHG9EF3SDKnWzaMpYZZ3ENmjJkXXVc8Y5mJYgpyVFQUypcvDwsLC5N+hjCx8uXLS4srmLKTJ09CrVajQoUKJts0lxjnmnKdPHkSFhYWqFSpklk0mZljrpUpUybdw0GURInHNcUUZDs7O/j7+8PGxgbdu3dXzH2BzO7169fo3r07bG1t4e/vbxaTwzjXlIlzzTRoNBpYWOi1H9jolJpriinIwKdvXqtXr8abN2/QvXt3vS9qz9JGo9Gge/fuePv2LVavXo3SpUvLHZLecK4pC+ea6dBqtSZdkBWda6RAI0eOJAA0adIkuUPJkHLlylG5cuXkDiPdJk6cSADIxcVF7lAMhnNNGTjXTEfhwoWpVq1acoeRbkrONUUW5NjYWKpRowYBoD179sgdTrqZ8kFy9+7dBIBq1qxJcXFxcodjMJxr8uNcMy0ODg5Ut25ducNIF6XnmmIfe3r+/DkqV64MURRx5coVlChRQu6Q0kzXZGNqC6Y/efIEVapUgYWFBa5evYoiRYrIHZJBca7Jh3PN9HItb968qFChAk6cOCF3KGliCrmmqHvIiRUpUgSbN29GWFgYHB0djTJykX2actSlSxeEh4dj06ZNikxafeNckwfnmmnmmkajgVqtljuMNDGVXFNsQQaAFi1a4I8//sDVq1cxevRoucPJFEaNGoVr165hypQpaNGihdzhGA3nmvFxrplmrpliU5fJ5Jrc18y/RaPR0C+//EIAaMOGDXKHkyamdl9v/fr1BICaNm1KGo1G7nCMjnPNeDjXTDfXsmTJQq1bt5Y7jFQzpVxT7D3kxIKDg1G5cmWEhobiwoULJvNQuind17t16xZq1qyJXLly4dq1a2az9GNaca4ZHufaJ6aaa1ZWVmjVqhV27doldyjfZGq5puhL1jp58+bF9u3bkZCQgC5duiAiIkLukMxKeHg4OnfujISEBPj6+io+aQ2Jc82wONf+n6nmmqkMBjHFXDOJggwAtWvXxvz58/HgwQMMHDiQ59zqCRFh4MCBePjwIRYsWICff/5Z7pBkx7lmGJxryZlaromiCCJSfFOXyeaabBfL00EURercuTMBIHd3d7nD+SZTuK+3ZMkSAkBdunQhURTlDkcxONf0j3MtZaaUa3FxcQSAevbsKXcoX2WquWZSBZmIKCwsjH744QeysLCgf/75R+5wvkrpB8l//vmHLCwsqFSpUhQWFiZ3OIrDuaY/nGtfZyq5Fh0dTQDIyclJ7lC+yJRzzWQuWetky5YN/v7+sLS0RNeuXREcHCx3SCYpODgYXbt2haWlJfz8/JAtWza5Q1IczjX94Fz7NlPJNd0cbqXeQzb1XDO5ggwAFStWxIoVK/Dy5Uv07t0bWq1W7pBMilarRa9evfDy5Ut4eXmZTHenHDjXMoZzLfVMIdeUXJDNItfkPkXPiEGDBhEAmjZtmtyhpEiplxHd3NwIAA0ePFjuUEwG51r6cK6lnZJz7d27dwSAhg0bJncoyZhDrpl0QY6JiaHKlSuTIAh08OBBucNJRokHyQMHDpAgCFS5cmWKiYmROxyTwbmWdpxr6aPkXAsKClLkSknmkmsmeclax8bGBr6+vsiWLRt69eqFFy9eyB2Soj1//hy9e/dGtmzZ4OfnBxsbG7lDMhmca2nDuZZ+Ss413WV0JV2yNqdcM+mCDAAlS5bE+vXr8f79e3Tt2hXx8fFyh6RI8fHx6Nq1K96/f48NGzaY5CozcuNcSx3OtYxTaq4p7R6yueWayRdkAGjfvj0mTJiA8+fPY8KECXKHo0jjx4/HhQsXMHHiRLRr107ucEwW59q3ca7phxJzTWkF2exyTe5r5vqSkJBA9evXJwC0bds2ucMhIuXc19u6dSsBoPr161NCQoLc4Zg8zrUv41zTL6Xl2r179wgATZkyRe5QzDLXzOIMGfj0jW3r1q3Inz8/Bg4ciPv378sdkiIEBgZi0KBByJ8/P7Zu3aqYb7amjHMtZZxr+qe0XNOdIcs9OtNcc81sCjIAFChQAFu3bkV0dDQ6d+6MqKgouUOSVVRUFLp06YLo6Ghs27YNBQoUkDsks8G5lhTnmuEoKdeU0NRlzrlmVgUZABo2bIi//voLd+7cwbBhwxQ/rN1QiAjOzs64c+cOZs2ahQYNGsgdktnhXPuEc83wlJJrct9DNvtck/N6uaFotVpq06YNASBvb2/Z4pDzvp6XlxcBoLZt25JWq5UlhsyAc41zzViUkGvnz58nALRgwQJZXt/cc80sCzIRUWhoKBUrVoysrKzo8uXLssQg10Hy8uXLZGVlRcWLF6fQ0FCjv35mw7nGuWYscufa2bNnCQAtWbLE6K+dGXLN7C5Z6+TMmRN+fn4AgC5duuDDhw8yR2QcoaGh6NKlCwRBgJ+fH3LmzCl3SGaPc41zzVjkzjW5mroyS66ZbUEGgKpVq2Lp0qV49uwZnJycIIqi3CEZlCiK6Nu3L549e4alS5eiSpUqcoeUaXCuca4Zi5y5Jsc95EyVa3KfohuaKIrUu3dvAkBz5swx6msb+zLi7NmzCQD16dPHpBblNheca8xY5Mq1Q4cOEQBatWqV0V4zM+Wa2RdkIqLIyEgqX748qVQqOnHihNFe15gHyePHj5NKpaIKFSpQZGSkUV6TJce5xoxFjlzbv38/AaB169YZ5fUyW66Z9SVrHTs7O/j7+8PW1hbdu3fH69ev5Q5Jr4KCgtC9e3fY2trCz88PdnZ2coeUaXGuMWORI9eMeck6M+ZapijIAFC6dGmsWbMGb9++Rffu3aXEMnUajQbdu3fHu3fvsHbtWpQuXVrukDI9zjVmLMbONWMV5Myaa5mmIANA165d4erqitOnT2Py5Mlyh6MXv//+O86cOYNRo0bB0dFR7nDY/3CuMWMxZq4Zq8s60+aa3NfMjS0uLo5q1qxJAGjXrl0GfS1D39fbuXMnAaBatWpRXFycwV6HpQ/nGjMWY+Xali1bCADt2LHDYK+RmXMtU50hA4CVlRW2b9+O3Llzo2/fvnjy5IncIaXL48eP0a9fP+TJkwfbt2+HlZWV3CGxz3CuMWMxVq4Z+pJ1Zs+1TFeQAaBIkSLYvHkzwsPD0aVLF8TGxsodUprExMSgS5cuCA8Px+bNm/Hdd9/JHRL7As41ZizGyDVDFmTOtUxakAGgefPmmDp1Kq5duwZXV1e5w0kTV1dXXL9+HW5ubmjWrJnc4bBv4FxjxmLoXDNkQeZcQ+a7h5yYRqOhZs2aEQDy8fHR+/YNcV9v3bp1BICaNWtGGo1Gr9tmhsO5xozFkLm2fPlyAkDHjh3T63Y51z7J1AWZiOjdu3dUuHBhypIlC928eVOv29b3QfLGjRuUJUsWKly4MAUHB+ttu8w4ONeYsRgq15YuXUoA6NSpU3rbJufa/8u0l6x18ubNi+3btyMhIQGdO3dGeHi43CGlKCwsDF26dEFCQgJ8fX2RJ08euUNiacS5xozFULmm1WoB6O+SNedaUpm+IAPAzz//jAULFuDhw4cYOHCg4haaJyIMHDgQDx8+xMKFC1GrVi25Q2LpxLnGjMUQuabPe8icaymQ8/RcSURRJEdHR72u9amvy4iLFy8mANS1a1ezH66eGXCuMWPRd67pFnq4cuVKhrfFuZYcF+REwsLCqFSpUmRhYUHnzp3L8Pb0cZA8e/YsWVhYUOnSpSk8PDzDMTFl4FxjxqLPXJsxYwYBoBs3bmRoO5xrKeNL1olky5YNfn5+sLS0RNeuXREcHCxrPO/evUO3bt1gZWUFPz8/2NvbyxoP0x/ONWYs+sw1fYzO5Fz7Mi7In6lYsSK8vb3x6tUr9OrVS2piMDatVotevXrh1atX8PLyQoUKFWSJgxkO5xozFn3lWkabujjXvkHuU3SlGjJkCAGgqVOnpnsbGbmMOGXKFAJAQ4cOTffrM9PAucaMJaO5NmnSJAJAjx49Stfvc659HRfkL4iJiaEqVaqQIAh04MCBdG0jvQfJgIAAAkBVqlShmJiYdL02Mx2ca8xYMppr48aNIwD07NmzNP8u59q38SXrL7CxsYGfnx+yZ8+O3r174/nz50Z53efPn6N3797IkSMH/Pz8YGNjY5TXZfLhXGPGktFcS+9jT5xrqcMF+SuKFy+O9evX4/379+jatSvi4+MN+npxcXFwdHREaGgoNmzYgOLFixv09ZhycK4xY8lIrqWnqYtzLfW4IH9Du3btMHHiRFy4cAHjxo0z6GuNGzcOFy9exKRJk9C2bVuDvhZTHs41ZizpzbX0nCFzrqWB3NfMTUFCQgI1aNCAANDWrVtT/Xtpua/3999/EwBq2LAhJSQkpDdUZuI415ixpCfXBg8eTADow4cPqfp5zrW0EYgUNrtPod68eYPKlSsjMjISly5dQpkyZb75O+XLlwcA3Llz56s/d+/ePVSvXh329va4du0aHBwc9BIzM02ca8xY0pprAwYMwLp16xAREYGsWbN+9Wc519KOL1mnkoODA7Zu3Yro6Gh07twZUVFRetluZGQkOnfujNjYWGzbto2TlnGuMaNJa66l9pI151r6cEFOgwYNGmDWrFm4e/cuhg4dmuFh7UQEZ2dn3Lt3D7NmzUL9+vX1FCkzdZxrzFjSkmupaeriXMsA+a6WmyatVkvt2rUjALRixYqv/uy37uvpFvtu3749D1dnyXCuMWNJba7pFqrQarVf/BnOtfTjgpwOoaGhVLx4cbKysqJLly598ee+dpC8ePEiWVlZUfHixVPdIMEyH841ZiypybVOnTqRSqX64jY41zKGL1mnQ86cOeHn5wdBENClSxeEhoam6fdDQ0Ph6OgIQRDg7++PHDlyGCZQZvI415ixpCbXNBrNF+8fc67pgdzfCEzZypUrCQC1adMmySWc+Ph42rlzJ+XLl4/y5MlDs2fPpp07d1J8fDxptVpq3bo1AaBVq1bJGD0zJZxrzFhSyjVdnpUuXZosLS2T5BkRca7pCRfkDBBFkZycnAgAzZo1i169ekVTp06lvHnzEgDpn4WFBQGgvHnzUqNGjQgA9e3bl++vsFTjXGPGkjjXJk2alCTPBEFIlmdTp06liRMncq7pAT+HnEHR0dGoWbMm7t69CysrKyQkJHxzaTOVSoX9+/ejRYsWRoqSmQPONWYs0dHRqFChAp4+fQqVSgVRFL/4s7r/X6JECdy6dQu2trZGjNS88D3kDLK1tcWECRMgiiJiY2NTtc4oEaFt27Y4efKk4QNkZoNzjRnLxYsXpYUnvlaME/////77DxcvXjR4bOaMz5AzKCgoCKVLl0ZUVFSanhVVqVSws7NDYGAgChYsaMAImbngXGPGoMuz6OjobxbjxDjPMo7PkDPI29sbMTExaR7cIIoioqKisHLlSgNFxswN5xozBl2epaUYA5xn+sBnyBmQkJCAQoUKITg4ON3byJcvH16+fAlLS0s9RsbMDecaMwbOM3nxGXIG7N+/P0OJCwDv3r1DQECAniJi5opzjRkD55m8uCBnQGBgYJrWBU2JWq1GYGCgniJi5opzjRkD55m8uCBnQGRkJARByNA2VCoVIiIi9BQRM1eca8wYOM/kxQU5A7JmzZrhVXi0Wi3s7e31FBEzV/rINVEUOdfYVxFRqh6n+xrOs/TL2LWJTK5MmTLScmTpJYoili9fjqCgIDRu3BgNGzZE9uzZ9RQhMxffffddhnNNq9V+cwF6lrl8/PgRp06dwrFjx3Ds2DHcvXs3w9vkPEs/7rLOAH10JNrY2CBXrlwICgoC8OlyT7Vq1dCkSRM0btwYderUQZYsWfQVMjMxDx48gIeHB9atW/fNxeO/JUuWLLh8+TLKlSunp+iYqYmJicG5c+dw7NgxHD9+HJcvX5YebypUqBAaNWqE3bt3Z+iSM3dZZ4DRh3WamalTp5JarU4yTzi1/wRBoKlTp5IoihQYGEienp7UqVMnypkzp/Qz1tbW1KhRI5o5cyb9888/lJCQIPcuMwMTRZEOHTpErVq1kvLgp59+onbt2pFKpUpXriX+17p1azp8+DDPHM4EEhIS6J9//qEZM2ZQo0aNyNraWsqDXLlyUefOncnT05MCAwNJFEUSRZE6duyY7txSqVTk5uYm926bLC7IGfTq1SvKmjWrNHQ9rf+aNGlCL168SLJNjUZDV65coXnz5lHz5s3J1tZW+nl7e3tq06YNLV68mG7cuPHVhcKZaYmKiiIvLy8qV66cdHDr2LEjnTp1ikRRlHItrUVZpVJR1qxZyc/Pjzp27Cj9frly5cjLy4uioqLk3nWmJ1qtlm7cuEGLFi2iNm3akL29vZQHtra21Lx5c5o3bx5duXIl2bHj+fPn0opNgiCk+ZimUqnI3t6eXr16JdPemz4uyHqwdOnSNCeuWq2mpk2bEgDKli0beXt7f/GMJS4ujk6fPk1ubm5Ut25daaUV/G+1lW7dutHKlSvp8ePHfNZjgp4/f04TJ06Uroxkz56dxo4dS0+fPk32sydOnCALC4tUF2WVSkUWFhZ08uRJaRtPnjyhMWPGUPbs2aUzpYkTJ9Lz58+NuNdMH0RRpEePHtHKlSupW7duSVb/srCwoLp165KbmxudPn2a4uLiUtyGVqslLy8vqXj36dOHdu3alaY8A0BqtTpJnrG044KcQW/fvqWCBQuSjY0N2drafvPyte5bpC5x9+/fT4ULFyYA1KhRI3r06NE3XzMiIoIOHDhA48aNo8qVKyf5Jlu0aFEaMGAAbd68mV6/fm3o3WfpJIoinT17lhwdHaWcKVWqFC1btowiIiK++rsnTpwge3v7NOfa5yIiImjZsmVUqlQp6YDq6OhI586d4y92Cvb69WvavHkzDRgwgIoWLSq934IgUOXKlWncuHF04MCBb+YREdGjR4+oYcOGBIAKFy5M+/fvl/5favNMd/zJkycPvX371pC7bva4IGeARqOhJk2aEADatGkTvXr1itzc3KRvqWq1miwtLaWEzpcvH7m5uSW7pBMWFkZDhw4lAJQlSxZatGgRaTSaVMcREhJCvr6+NGzYMOngqvtXrlw5cnFxoV27dtGHDx/0/BdgaRUXF0cbN26katWqSe9Rs2bNKCAgIE23Hz7PtcRnKV/LtZRotVrav38/NWvWTNpOtWrVaOPGjV88q2LG8+HDB9q1axe5uLhItzN0/0qVKkXDhg0jPz8/CgkJSfU2NRoNLVy4kLJkyUIAyNnZmcLCwpL9XGqPae7u7gSAfvnllzQdu1hSXJAz4I8//pCSObH4+HjatWsXzZkzhyZPnkxz5syhXbt2UXx8/Fe3d+LECSpZsiQBoFq1atGdO3fSFdeLFy/Ix8eHnJycqFChQknOmKpXr06TJk2iI0eOUHR0dLq2z9Lu7du39Oeff5KDg4N0P8/Z2Znu3r2boe3qci1fvnyUJ0+eVOfal9y5c4eGDh0qHagdHBxo+vTpfOZjRNHR0XTkyBGaNGkSVa9ePcll40KFCpGTkxOtX78+We9Jat2+fZtq1qxJAKhkyZJ04sSJb/5Oao5pupOKKVOmpCsuxgU53QICAqQzidjYWL1tNyoqisaOHUsqlYqsrKxo+vTp6T64ElGSDu7OnTtTrly5pA+3lZUVNWzYkGbMmMEd3AZy7do16tevH1lZWREA+u6772ju3Ln0/v17vb5OuXLlqFy5cnrb3vv372nu3Ln03XffEfCp279fv3507do1vb0G+yRxJ3TDhg2lXNHd3+/cuTMtX75c6oROr7i4OJo+fTpZWlqSSqWisWPH6rWhLyYmhqpWrUoAKCAgQG/bzUy4IKfDs2fPKFeuXJQzZ84UG2/04fz581S+fHkCQJUqVaLLly/rZbtarfabHdyLFi3iDu4M0Gg0tGPHDqpfv770t61bty75+voa7EuPvguyTkJCAm3fvp3q1Kkj7UuDBg1ox44dfGkynRJ3Qrdu3TpZJ3SLFi2+2AmdXpcvX6ZKlSoRACpfvjxduHBBL9v93JMnTyhHjhyUK1cu+u+//wzyGuaMC3IaxcbGUvXq1QkA7du3z+CvNXXqVLKwsCC1Wk0TJ07U+2Xm1HRwe3t706NHj7jR5xs+fPhACxYsoGLFihEAsrS0pD59+ujty9TXGKogJ3b58mXq06cPWVpaEgAqVqwYLVy4kHsTvkHXCe3t7U1du3ZNct/f0tKS6tWr981O6PSKjo6miRMnklqtJgsLC5o6daper+ilZO/evQSAatSoYfDXMjdckNNoxIgRBIB+//13o73mjRs3pEtBpUqVojNnzhjstVLTwb1p0yYKCgoyWAym5v79+zRixAiys7OTGl2mTp1q1C53YxRknaCgIJo6dSrly5ePAJCdnR2NGDGC7t+/b5TXNwVBQUG0adMm6t+/PxUpUuSLndCRkZEGi+H06dNSk2fVqlXpxo0bBnutz/32228EgEaOHGm01zQHXJDTYMuWLdLjSca+35qQkEBz584lGxsbEgSBRo4cmarHGjIqJCSE/Pz8vtrBvXPnzkx3lqSbptWyZUvp71G5cmXy8fGR5azAmAVZJyYmhnx8fOinn36S/gatWrWiQ4cOZbqrKR8+fKCdO3fSyJEj9dYJnV7h4eHSiYONjQ3NmzdPluOV7nGqv//+26ivbcq4IKfSnTt3yM7OjgoUKCDr873379+nunXrSmeshw4dMurrv3jxgtavX59pO7gjIyNpxYoVVLZsWWm/O3XqJE3TkoscBVlHFEU6deoUderUSeoILlu2rFlPAYuKiqLDhw/TxIkTDdIJnV6HDh2Szsjr1asn61WL169fk4ODA9nZ2WX4aYLMggtyKkRERFDZsmVJrVbT6dOn5Q6HtFotLVu2jLJmzUoAqF+/fhQaGmr0OHQd3MuXL/9mB3dGOsWV4L///qMJEyYkmaY1btw4gzX1pZWcBTmxp0+f0tixY6UpYDlz5jSLKWDx8fF07ty5b3ZC379/X5YvZqGhodSvXz8CQFmzZiVPT09FNGWeOnWK1Go1lS1b1ihX9EwdF+RvEEWRevToQQBo/vz5coeTxLNnz6h58+bS86I7duyQNR5dB/f8+fOpRYsWyTq4W7dubVId3ClN0ypdujR5enoq7uCilIKsExERQZ6ensmmgJ09e9YkLmdrtVq6fv261Amt+/KbuBN6/vz5dPXqVdlzeceOHdLz7c2bN6dnz57JGs/n5s2bRwCoV69eJvHey4kL8jcsX76cAFCHDh0UmUyiKJKPjw/lyJGDAJCjoyO9efNG7rCIKGkHd7169aTuXF0Hd9euXRXZwR0XF0cbNmyQGul0B7oDBw7IfvD9EqUVZB2tVksBAQHSF0elTgETRZEePnwodULnyZMnWSf0tGnT6MyZM4qJ+82bN+To6ChdifDx8VHU50hHFEVq3749AaAVK1bIHY6icUH+iosXL5KVlRWVLFlS8U1Lr1+/pk6dOkmX0DZu3Ki4D2dkZKTUwV2lSpUkHdxFihSh/v37y9rBndI0rWHDhpnE/S+lFuTE7t69S87OztKVEwcHB/rzzz9lmwL2tU7oKlWq0Pjx4w3eCZ0eoijSxo0bpVtEnTp1Uvzc+g8fPlCJEiXIysqKLl26JHc4isUF+QtCQkKoSJEiZG1tbVLTiXx9faXHUVq3bq3oe3eJO7hLly6dpDO1bNmyNHLkSKN0cF+9epX69u0r3RcsUqQIzZs3T5b78ullCgVZJzQ0lObNmycVQSsrK6NMAQsNDZU6oXVNebp/pUuXpuHDhxutEzq9nj9/Lq2TnT9/fvLz85M7pFS7evUqWVtbU9GiRfU+qc5ccEFOgVarlZJ+9erVcoeTZiEhIdSnTx/p3q2Xl5diL7Um9rUO7mrVqtHEiRPp8OHDeunc1Wg05O/vn2yalp+fn0mOEDWlgqyTkJBAvr6+0lMDAKh+/fp6mwKWuBO6WrVqSTqhCxcuTH379pWlEzo9tFotrVixQprq5eTkZJJFbdWqVdLJgikck4yNC3IKZs6cKXUvK+2yb1okXtqxYcOGqVraUSlEUaT79+9/tYN7+vTpdO7cuTR1cH8+TcvKyoqcnJzoypUrBtwbwzPFgpxYSlPAFixYkKarI7pO6OnTp1ODBg0U1wmdXg8fPqQGDRpIs9BNeU60KIrUt29fAkB//fWX3OEoDhfkzxw9epRUKhVVqlTJLJ6hDAsLI2dnZwI+Le24cOFCk5xBrNVq6erVqyl2cGfNmpVat25NCxcupOvXr6f4zTswMJCGDx+eZJqWm5ub4u+9pZapF2Sd169fk5ubW6qmgOk6oRcuXEitWrVSdCd0emg0GlqwYIG08tawYcNSXCLR1ERFRVHFihVJpVLRsWPH5A5HUbggJ/Ly5UvKly8f2dvb04MHD+QOR68SL+1Yo0YNun37ttwhZUhcXBydOXOGpk2blqyDO0+ePNS1a1dasWIFrV27llq0aJFkmtb69evNbsauuRRkndjYWPLx8aHKlStL713Lli1p7dq1tGLFCnJ0dDSJTuj0unXrFtWoUYMA0Pfff08nT56UOyS9un//Ptnb21O+fPlStWZ3ZsEF+X/i4+OlFW38/f3lDscgoqKiaNy4caRSqcjS0pL+/PNPkz9w6URGRtLBgwdp/Pjx9NNPPyXp4NZNNfvjjz/M9sNvbgVZ5+XLl/THH39Q0aJFk7yfAOjHH3+k8ePH08GDBxXXCZ1ecXFx9Oeff0pLJI4bN84srtSlxNfXV+rdMPXBQfrCBfl/xo4dSwBozJgxcodicBcuXEiytKO5PIbw33//0fjx46Vnsm1tbemnn36iEiVKfLGD25Q6qb/GXApyaGgo7dixg0aMGJGsE7pEiRL0008/SbcrcubMSRMmTDCbZf4uXbpEFStWJABUoUIFunjxotwhGdyvv/5KAGjcuHFyh6IIXJCJyN/fnwBQ7dq1M803tbi4OHJzcyMLCwtSqVQ0YcIEk5w/LYoinTlzhrp06SJ10ZYuXZqWL1+eZJqWroO7b9++UqOboTq45WCqBTkqKooOHTr01U7oDRs20MuXL6Xf0U0B0z0qp1arqUuXLnTmzBmTatbSiY6OpgkTJkhXrtzc3MzmytW3xMfHU+3atQmA7JMGlSDTF+QHDx5QtmzZKG/evEk+9JnFzZs3qVq1atKqNEqY1Z0asbGxtGHDBqpSpYp0AG/RokWqpmkl7uDu0qVLsg7uBg0apKuDW06mUpDj4+Pp7NmzKXZC586dm7p06UIrVqxIVSe0VqulAwcOJJkCVrVqVdqwYYPJ9AicPn2afvjhBwJA1atXp5s3b8odktG9ePGC8uTJQ9myZaOHDx/KHY6sMnVBjo6OpkqVKpEgCHTkyBG5w5FNQkICzZs3j2xsbAgAjRgxgsLDw+UOK0Vv3ryhadOmUf78+ZNM07p37166t/mtDu5WrVp9tYNbCZRakLVaLV27di3FTmg7Oztq2bKlXjqh7969S8OGDZPeu/z589Off/6pmDGynwsPD6fhw4cT8GmJxPnz55vk8+/6cvjwYRIEgX788UeTvFKnL5m6IA8YMIAA0IwZM+QORRHu379P9erVk6ZVGXtpx69JaZrW/PnzDXIP+Fsd3I6OjuTl5UUPHz5UzCVSpRRkURTpwYMH5OXllWIndP369Q3aCZ3SFLC+ffvS1atX9f5a6XXw4EEpvvr165vdEx3pNX36dAJAAwcOlDsU2WTagrxmzRrpUQqlnvXIQavVkqenp+xLOxJ9OnP38/OTviQAn9Z4NfY0rcQd3CnN4O7Xrx9t3LhR1g5uOQvyq1evaOPGjdSvXz/67rvvksyErlq1qiyd0Lrc+XwKmL+/v2zP4b9//14aipE1a1Zavnw5H3sS0Wq10u2HtWvXyh2OLDJlQb527RrZ2NhQkSJFFD23Vk6fL+1ozEfBQkNDaf78+dKjLkqbpvX+/Xvy9/en4cOHpziDe8SIEbRjxw6jfpExZkFO3AldpkyZJPtfpkwZGj58OPn7+ytmtOOVK1fIyclJurpStGhRmj9/vlEXjPH395dus7Ro0cJsOsP1LTg4mL777juysbGh69evyx2O0WW6gvzx40cqWbIkWVpa0oULF+QOR9FEUaT169dTzpw5CQB16dLFoPfk7t27l+w+4LRp0xR7H1Dn5cuXtGHDhi92cE+YMIEOHTpk0A5uQxZkXSf0hAkTqGrVqkmuEHypE1qJUpoCNnz4cAoMDDTYa75584a6dOkiPaa1fv16xdzmUKrz58+TpaUlff/99/Tx40e5wzGqTFWQRVGkDh06EABatmyZ3OGYjNevX1Pnzp2lmcAbNmzQ20FF1ymbeJpWlSpVTHaalq6De8WKFdSlSxfKnTt3sg7uP//8k86ePavXDm59FmRdJ/Sff/5J9evXT3IPPXEn9IMHD0yyuMTGxtL69euTTAFr0aIFHTx4UG/7I4oibdiwQerg79y5s9mMaTUGDw8PAj4tLWmKOZZemaogL1iwgABQ9+7dM9WbrC9+fn7SZbeWLVtmaGnHyMhIWr58uXTJU6VSUefOnU32WdIv0XVwL1iwgFq2bCnN0k7cwb1gwQK6du1ahu4nZqQg6zqhU4pR1wmtjxiVRhRFOn36NHXu3Fl6/rlMmTK0fPnyDN3v/u+//6hly5bSVR5TWiJRKURRpO7duxMAWrhwodzhGE2mKchnzpwhtVpNZcuWTTIwgqXN+/fvycnJiYBPSzuuWLEiTQfpZ8+e0bhx46RpWjly5KDx48fTs2fPDBi1cug6uFM6+0zcwZ3Ws8+0FGRdJ3RKZ/G6TmjdWXxmGVChj7zUarW0fPlyqSGyb9++irmPborCw8OpTJkypFar6cyZM3KHYxSZoiC/efOGChQoQLa2tnTnzh25wzELAQEBUkdtgwYNvvpAv6HORMxB4g7uz+/Pfvfdd6nu4P5WQX716hVt2LDhi53QEyZMMKuZ0OmV3is3Dx48SLJE4oEDB4wYtfm6ffs22draUsGCBent27dyh2NwZl+QNRoNNWrUiADQ5s2b5Q7HrISFhdGwYcMI+LS044IFC5I8UqK7V5d4mlbLli3p4MGDZnXpU58Sd3Cn1MH8pQ7uzwuybjtf6oQeMWKEojqhlSa1vQ0ajYbmz58vDdUZPny4YofqmKpNmzYRAGrcuLFJLh2bFmZfkCdPnkzAp7VEmWGcOnWKvv/+ewI+Le144sSJZNO0hg8fnqFpWpnVlzq4E5/ZHjp0iEqVKkVFihRJsRNad6ZtCp3QSnTv3j0aPnx4su7/EydOUPXq1QkA/fDDD3Tq1Cm5QzVbujXd//jjD7lDMSizLsj79u0jAFStWjWT7Ng1JdHR0eTk5JRsaMaCBQuM+rynOUt877dTp06UPXv2JGe+un/ZsmWjTp06mXQntBJ9/ny87p+Tk1OmHvdoDLGxsdLM/f3798sdjsGoYKaePXuGPn36IGfOnPD19YW1tbXcIZkljUYDf39/NG/eHBs2bAARwdbWFgCQLVs2NGjQADly5JA3SDMgiiKuX7+OPXv2YM+ePTh06BDCwsIAAFZWVlCr1RAEAQAQHh6OQ4cOST9748YNiKIoZ/hmIWfOnGjQoAHs7e0BQMrzDRs2oHnz5vD394dGo5EzRLNlbW0NX19f5MyZE71798Z///0nd0iGIfc3AkNI/G1q3759codjlnRnCynNDI6Li6Np06ZJi6yPHz+ezyDSKC2d0PHx8VSuXDkqW7asWT8/LKfo6GgaP368tETitGnTKC4uLtmMdd0UMHNZZ1tpdFc9q1evbpZXPc2yIOsajSZPnix3KGYnpWlaX1pV5+bNm3yPLQ0S3y/+Uif0oUOHUuyETqnLWtfB/aX7yroJW3LO4DYFiXskqlevTrdu3Ur2M4ZYhYyl7Pfff5ca6MyN2RXkzNSRZywpdZymdt3ZhIQE7kL9gq/NxP5aR3VKUvMc8vv3701qBrXcwsPDpS/3NjY2yZ4iSElG1ulmqZOQkGC2T86YVUG+c+cO2draUoECBRQ//9gUREREkKenp1QsVCoVdenShc6ePZvmS54PHjyg+vXrS81eBw8eNFDUyqWvZ45Tkp5JXbozcn42ObkDBw6k+jn7lIiiSGfOnKEuXbrws/cGoJstYWdnZ1azJcymIGfGqS6G8vnUopw5c9KECRMyvEJNZptk9LV1lXPnzp3uqVwpyegs68T3rB0dHVO8Z61bx1ifM7iVJqOT6FLy7NkzGj9+fJIpYOPGjcs00+kM5fTp02Y3fdEsCnLiuacLFiyQOxyTpJum1alTJ+kbfdmyZWnFihV6/0b/33//SZe/zWnWr25u9fz586lFixbJZkK3atWKFi5caJCZ0Ppe7Sm1862vXr1qNpdi9TmrPSWRkZG0YsWKZFPATp8+zU126TR//nyzWp/ALArysmXLCAB17NjRLN4UY4qNjSUfH58kK9+0bNmSDh06ZNC/pW41HN3Sjqa4Go5uZafly5cbdWWnlBh6PeTUrgB1//59k/sMGnI1s5RotVo6ePCgtAAFAKpcubLJrnAmp8Qr+Hl6esodToaZfEHWrZ1ZsmTJTLd2ZkaktDbsiBEjDLo2bEpMbb3Yly9f0vr161OcnGWstY9TYuiC/DlzWCPZ2Ot9pyQwMDDZFDA3NzeT+3Iqpw8fPpjNGvcmXZBDQkLou+++IxsbG7p27Zrc4ZiEy5cvU58+faQznKJFiypimpa/v3+Sy4UZvV+tL+/fvyc/P78UO6HLli2bpk5oQzJ2Qf5caGjoFzu4S5curbgO7sS3TRwcHMjf31/WeD58+EALFiyQpoBZWVmRk5MTXblyRda4TMW1a9fI2tqaihQpQiEhIXKHk24mW5C1Wq30gVqzZo3c4ShaQkIC+fr6Ut26daWDZP369cnf358SEhLkDk/y/v176tu3LwGf1gpevny50e9PRkZG0oEDB2j8+PFUpUoVvXZCG5LcBflzr169oo0bN6bYwV2lShUaP368LB3cWq2WPD09pcbCfv36yf5lKrGEhATy9/eXnkgAQHXr1iU/Pz9FfVaVaPXq1dIXelPtazDZgjx9+nQCQP3795c7FMUKDQ2lefPmJZmm1a9fP7p69arcoX3VgQMHpJjr169PDx48MNhrpbYT+uHDh4q+lK60gpyYroPby8srxQ7uevXqSR3chlx/2dQevft8CliRIkVo3rx5ivoCoSSiKFK/fv0IAM2YMUPucNLFJAvykSNHSBAEqlSpEo9kTMHdu3fJ2dlZui/l4ODwxWlaShUeHk7Dhw+XhjLMnz9fL2cIX+uEzpo1q9QJff36dZP6lq3kgvw5XQf3woULqVWrVsk6uFu0aEHz58/XWwd3QkICzZs3TxpOM2LECJMaTvPmzRv6888/eQpYKkRFRVGlSpVIEAQ6cuSI3OGkmckV5BcvXlCePHkoW7ZsBj1zMjVarZYCAgKoefPmSaZpbdy40aBnHYZ26tQp+uGHH6SxhTdv3kzT7yfuhO7cuTPlypUrWSf09OnTjdIJbUimVJA/l7iDu0GDBtIZoa7ruXPnzrR8+fJ0dXDfvHlTmmv/ww8/0OnTpw20F4anmwJWtWpV6e/TvHlzCggIMKkvj4b24MEDsre3p7x58yq6qTAlJlWQ4+PjqXbt2gRA9iYMpfh8mpZarSZHR8d0TdNSqujoaJowYYI02N/Nze2rXzJ0ndBOTk4pdkJPnDiRDh8+bPROaEMy5YL8OV0H98SJE6latWrJOridnJxo/fr1Xz3YxsXFkZubm7TAyYQJE8zmapooinT27NkkU8BKly5Nnp6eZjMgI6P8/f0JANWpU8ekvmibVEH+9ddfCQCNHTtW7lBk9/TpUxo7dqy0Jq6+pmkp2aVLl6hixYoEgCpUqEAXL14kov/vhB42bFiKndAjR45URCe0IZlTQf5c4g7usmXLptjB7efnJ3VwX7x4kSpUqEAAqGLFinTp0iWZ98Bw/vvvP5owYYL06Fb27Nlp7Nix9PTpU7lDk92YMWMIAI0ZM0buUFLNZAqyn5+fSX7j0SdRFOnUqVPJpml5eXllmvm4cXFxNHnyZLKwsCBBEKTnqHX/ihQpQv3791dkJ7QhmXNB/tzXOrh191nVajVNnjzZpG/XpIVuCpjuC4tKpaJOnTrRqVOnzOZKWVqZ4hVVkyjI9+/fJ3t7e8qXL5/J3RPQh5iYGFq3bh399NNP0sGnVatWBp+mpRRxcXF0+vRpcnNzo7p16ybphNY1Y40dO1bxndCGlJkKcmKiKNLDhw9pzJgx0qNMKXVwnz59OlMUZ1EU6dChQ8mmgPn4+GTKKWAvX76kvHnzmkzPkeILclRUFFWsWJFUKhUdPXpU7nCM6vXr1zR16lTZp2kZm1arpStXrtC8efO+2gl95cqVJEs7Dhs2jMLCwuQOXxaZtSCHhYWRs7MzAaAsWbLQ/Pnz6cqVK1IHd+IinbiD+8qVK2bfCBUYGEgjRoyQPj/58uWjqVOnZropYEePHpWeylF634iiC7IoitKgiJkzZ8odjtFcvnyZevfuLZ0JFitWjBYuXCj7NC1DEUWRAgMDydPT86ud0OfOnUvxdsXDhw+pQYMG0vCOAwcOyLAX8sqMBTkgIEC6ZN2wYcMUl0iMj4+nc+fO0fTp0/XewW0qdFPAihUrJl056NOnD12+fFnu0IxmxowZJjG3QtEFedWqVSY/eSW1dNO06tSpIx0wGjRoQDt27Pjmouim6MWLF1IndKFChTLcCa3VamnFihVkb29PAMjJyUkxYxqNITMV5JCQEOrTpw8Bn5ZI9PLySvXxISoqig4fPpyhDm5TpdFoaMeOHdKXV90UMF9fX7OfAqbVaqXL+KtXr5Y7nC9SbEG+evWqWcwm/Zb379/T3Llzk03TMrfZ3CEhIeTr60vDhg2jUqVKpdgJvXPnzgx3Qj9//lz64OXLl498fX31tAfKllkKsq+vr3QLp1WrVhleIlHXwT1y5MhkHdylSpWiYcOGkZ+fn9kdg65du0b9+vXLVFPAQkJCqEiRImRtba3Y46siC/KHDx+oRIkSZGlpKT3aYm5SmqY1ffp0evv2rdyh6UVERAQdOHCAxo0bR5UrV05yJqLrhN60aZNBOqFFUaSNGzdKl747depk9vfNzL0gv379mjp16iRdat64caNBLjHrOrj79+8vfUnWXbmpXLkyjRs3jg4cOGA2TzW8ffuWpk+fTg4ODtIUMGdnZ7p7967coRnEhQsXpNUBlXgLUHEFWRRFat++PQHmsb5lYrppWs2aNZM+6NWqVTP5aVpEX++EzpMnD3Xt2pW8vb2N2gn95s0bcnR0lJ7T9vHxMdv7hOZakEVRJB8fH+k5W0dHR6ONgNV1cHt5eVHXrl0pT548STq469atS25ubmbRwR0XF0cbN26UppqZ8xSwZcuWEQDq0KGD4o4HiivI8+bNIwDUo0cPxf2x0isiIoKWLVsmXapVq9XUtWtXOnfunMnuY+JO6ObNm0tn+rpO6NatW9OiRYsUMRPa399fOgNo0aKFWQ5PMceC/OzZM2kUrIODA+3YsUPWeLRaLV2/fp0WLlxIrVu3TtLBbWtrS82bN6d58+aZdAe3bgqYo6MjqdVqs5wCJooide/enQDQ/Pnz5Q4nCUUV5FOnTpFaraayZcuaxZuf0jStiRMnZvi+lxwSd0J36tQpWSd0w4YNacaMGV/shJZbaGiotBJM1qxZydPT02QPmikxp4Ks1Wpp2bJlUsHr37+/Iu9tJu7gbtiwYYod3J6enhQYGGiSX7z/+7/27jsuinN9G/g1syxtRRFBEDHRYAt2Yjeo0WMXS0SKXUQRNVEsERWDGkWjggVExaiIryiCmoRAolgTO7HlxIgREysqiIUOy87z/pHfcmKiwrKzU5bn+/mcf47LzD3Za+beeWbmmbt3yfz5841yFrC8vDzy/vvvE4VCIan5zSXTkB8/fkwcHByISqUyiusXMTEx5bNpubi4kK1bt0r+Gbi3GTJkSPnBhmVZ0qFDB1nOCf3DDz+UXxscOnSo2OXwxpgasvaS1bvvvksOHz4sdjmV9rY7uIcMGSJ2eVWWn59PtmzZ8sosYDExMWKXpbfr168TS0tLUq9ePcm8CY8hhBDwgBCC+/fv87EovTVo0AAMw+i1DLo9hqPv9hjTtgB0ewyJZu1VdHsMh4/tMeGpFnAchw0bNqBjx458LbJccXExcnJyUKtWLVhYWIBl2TdueFpaGr788ksoFAq91mnI7QH+ClJZWRlyc3PBcRzs7Oxe+zm5bA/w1zbl5+ejuLjYoNtT0bao1WqUlJSguLgYRUVFsLKyQq1atfTeWf5JqO/mxYsXyM/PB8dx0Gg0sLOzQ40aNfRa5+vIKWtvo1arcefOHbx48YK3rAFA27ZtYWpqyleZOhHiuyGE4OnTpzAxMUGtWrXAsqxe63obobKWk5MDlUoFc3NzvdZTEb62h7eGDADt2rWDl5cXb8sjhOD27duYPHkyfv31V9ja2sLJyQlOTk5QqVRQqVSws7NDly5d0Lx5c1hbW0Oj0YCnk37et0fr/Pnz2LZtG9LT03Hv3j0oFAr8+OOPeOedd/71WTlsT15eHo4cOYIffvgBP/74I0pKSnDx4kXUrVv3X5/la3vatWsHT09PaDQaFBcX48WLF7h+/TpOnTqF06dP48mTJygoKEBhYSFq164NNzc3DBo0CL169YKNjQ0vzdmQ3w0hBFlZWYiNjUV0dDSeP38OjuPAcRzeeecdfPrppxg5ciRq1qzJ2w8NOWStIoQQREZGYt26dVi2bBkv2+Pi4oLAwEB07NgRS5cuRZcuXQzarF7HkN+NRqPB9evXsXPnTiQkJECpVKJVq1bo1q0bPDw84OzszMt6/87QWSOE4NixYwgKCkL9+vWxdu1adOrUifcf5Vp8bQ+vDZlPHMchMTERM2bMQFlZGfz9/XH//n3cuXMHZ8+eRUlJCUpLS5GXl4fS0lLY29ujbdu2GDp0qNilv1VxcTGGDRuGsrIytG3bFsOGDcPu3bvRt29fnD9/HtbW1mKXqBNCCEaNGoXvv/8eDg4O6Ny5M1JSUjB8+HCcPHkSSqXSIOvVaDSYNGkS7ty5g8zMTDx9+hS5ubmwsrKCi4sLunbtijp16sDGxga//vorTpw4gT179qBRo0aIi4vDBx98YLCdU1+lpaVYs2YNtmzZgqysLPTo0QMTJkyAiYkJWJbFwYMHERAQgDVr1iA4OBhjxoyR7LYIraioCAsXLkTLli1525cUCgVCQ0Px5Zdfonfv3vD09MTMmTPRokULmJmZlf+31x6Q5fJdEEJw69YtfPbZZ0hNTYVSqcSAAQNgaWmJn3/+GceOHcOmTZvwyy+/yOq4VFpaitWrV2P58uV47733cO/ePfTq1QsBAQFYvHixpLdFkg2ZEIIVK1Zg6dKl6NChA3bs2IHmzZsDAMrKylBSUoKysjKo1Wo8e/YMP//8M06dOoW0tDSYmZmJXP2bEUIQHByMrKwsnDt3Dh988AEUCgVGjBiBfv36YdiwYTh8+LCkt+GffvvtNyQnJ2P+/PmYM2cObGxsEBcXh3HjxiE4OBirVq0yyAGKZVmcOXMGDg4O6NixI9577z24urqiXbt2cHBwgInJX9FmGAYcx+H58+e4ePEipk6dil69eiEiIgJjx44V/EynIi9fvoSvry++/vprDB48GLNnz0bXrl3Lf9gQQvDJJ5/gyJEj+PLLLzFx4kTk5+dj6tSpsmkEhkIIwfLly1FQUICdO3fi8uXLvCzXxMQE06dPx8iRIxEeHo7o6GgkJCSgVatWGD58OOrXr4+nT58iOzsbSqUS9vb2sLe3h6urKxo1aiTJ76W4uBhbt27FsmXLAABz587FmDFj4OzsDIZhUFRUhMuXL5f/AElJSSnfp6QsLy8Po0aNQkpKCry9vREREYGSkhIsWbIEERERuHr1Ko4ePSrJ7wQAeLvLuqysjOzevZuXZZWUlBALCwvy0UcfVXpGHI7jSGFhIdmzZw8v87LyuT1at27dIiYmJmTUqFGvPAahnfyAZVkyfvz4V/5NytvDcRzp0KEDsbKyIoWFha/8/76+voRlWZKcnMz79mi35eXLl6S0tJRwHFepx0o4jiP3798nPXv2JAqFgsyfP1+vx1H4/m7+/PNP8sEHHxBTU1MSFhb21mVzHEfy8/PJwIEDiUKhIBs3btT70RopZ60ynj17RszMzMjgwYMJx3G8Zk1LO1lIeHg46datG1GpVMTc3JzUrFmT2NvbEzs7O6JSqYipqSmxt7cnJ06c4OWRJz6/m+joaNKzZ0/CsiwZMGDAGx/L4jiOREVFEQDk888/5/XRLUNk7fnz58TNzY0olUqycePGV5av0WhIaGgoAUCuXr2q93r/ia/tkdbpwf/5+uuvUVRUhPXr10OlUlXqbxiGgYWFhYErqzqO4+Dt7Q0LCwtERUW98guNYRiMGzcOCxYswK5du3D+/HkRK628s2fPIi0tDatWrXrlpgmGYbBp0ya4uLjAx8cHT548Mcj6a9asCaVSCYZhKvWLl2EYODk5ISUlBZMmTcLq1asRGxvL27UsfeTn58PNzQ23b99GQkICAgMD33pGwjAMVCoVEhMTMWjQIAQGBiIiIkIS2yIGQgjmzp2LsrIybNmyxWBnQAzDoHHjxpg1axaOHz+OCxcu4OzZs7h8+TKuXbuGq1ev4ueff0Zqaipq166NgQMHIiYmBhzHGaSeqjA1NUVpaSmio6PxzTffoFmzZq/978UwDPz9/TFmzBgsX74cR44cEaHaysnJyUG/fv1w4cIFxMTEYMaMGa/sPyzLYvbs2ahVqxYmTZok2f1Ecg2ZEIJFixbB0dERrVq1Ersc3uzbtw+XLl3Cpk2bULNmzX/9O8Mw+Pzzz1G3bl1MmDBBUjvw63AcB19fX9StWxeTJ0/+1w5tbm6OpKQkqNVqjBgxAhqNRqRK/83CwgKRkZHo3r07/P39cfnyZdF3UEtLSwwePBgnTpyAu7t7pRuKhYUF4uPjMWDAAMyZMwdXrlwxcKXSlJmZiV27dmH8+PFwdHQ0+PoYhoGpqSlatGiBdu3awdnZGfb29nB0dETz5s3h5uaGH3/8EV27dsXkyZPxxRdfiJ4xLYVCgdTUVPj6+lZ4jwfLsoiOjkbDhg0le1wqKipC79698d///hf79u2Dj4/Pa/cfU1NTrFy5EpcuXcKFCxdEqLRikmvIf/zxBzIyMhASEiLdcX4dEUIwb948ODs7Y/To0W/cLlNTU0RFReH333/HoUOHBK5SN8nJyfj9998RGRn5xp363XffRVRUFM6ePYuwsDDJHJAAQKlU4uDBg7C1tcXgwYPx9OlTUethWRabNm1CmzZtdM69ubk54uLiYGdnh2HDhqGgoMBAVUoT+b/r6gqFAmvXrpXEcYNhGNjZ2SEpKQne3t5YtmwZjh8/Lpl9wNLSUqcffevXr8fjx49x8eJFA1emOxMTEzg6OuLAgQMYNmzYG7eLYRj4+fmhTp068PPzk+SPC0k1ZO3ZsVKpxNixY8UuhzcPHz5EZmYmFi5cWOFNRMOHD0fTpk0xbdo0lJaWClShbgghmD17NhwdHfHxxx+/8XPaofghQ4YgODgYv/76q4BVVszGxgYpKSl48eIFhg8fLvoO+rbn6ytiZWWFgwcPIjMzE/7+/pI58Avh0aNH+OabbzB16lTJ3UFrYWGBr776Co0bN4anpydycnLELqlKBgwYACsrK8yZM0dy2VIqlTh06BD69+9f4f6jVCoRHh5e/oik1EiqIRcXF+PgwYPw8PAw+IPcQlq/fj1YloWnp2eFn2VZFjExMcjKykJUVJQA1enu+fPnyMjIwKxZsyp8EJ5lWcTGxqJ27doYOnQoSkpKBKqyclq1aoVNmzbhzJkziIuLk9zBRhedOnVCUFAQ4uLicODAAVlvS2URQspzuHTpUkmcHf+Tubk5vv32WxQUFGDkyJGSunxTWSYmJvj0009x7tw5ZGdni13Ov/z98bOKjBo1CnXr1sW0adMkt49IqiHHxsZCrVZj+fLlktyxqoLjOOzYsQOurq6VvkGtc+fO6NatG4KDg1FUVGTgCnUXExMDAPD19a3U52vWrIn9+/fDyclJcmf9DMNg/PjxcHV1xfTp05Gbmyt2SVXGMAxCQkLQpk0bTJo0Cfn5+WKXZHBPnjzBwYMH4efnh1q1aoldzhs1bdoUGzduxMmTJxEeHi65RlAZc+bMAcMwCA0NlWX9WiYmJvjss8+Qnp4uuR8XkmnIhBCEhoaiUaNGaNSokdjl8ObWrVt4/vw5goODK/0jg2EYxMTEYOLEiQauTneEEGzYsAGNGjWCjY1Npf6GYRh0794dR44cgZWVlYEr1J1CocC+fftQWFiI6dOny/pgo1QqsX//fuTn50tyeJFPhJDyJrFixQpJ/4jXXr90d3fHokWLcPv2bbFL0pm1tTV69eqFbdu2Qa1Wi12OXiZNmgSGYRARESF2Ka+QTEPOzc3FvXv3MG3aNEnvWLoghGDVqlUwMTFB//79dfpbZ2dnbNy4UXKPcj19+hT37t3D7NmzdfqeGIaR9GWIxo0bY+bMmYiLi0NaWprY5eilcePGmDRpErZv346MjAyxyzGYp0+fIj4+HhMmTJDctePXYVkWu3btgoWFBTw8PGQ3dM0wDNauXYvCwkIcPHhQ7HL0UqtWLbRt2xZRUVGi3zvyd5JpyN988w0AYMyYMSJXwh+O47B//3707NlT50npK/tsrdC2bdsGhmGM6nsC/vrvvXz5ctStWxc+Pj6yO1j+HcMwCAsLg0qlwujRoyV1wOGL9rljhmGwcuVKSe4rr2NtbY1t27bh2rVriIyMlN0IRuvWreHk5ISFCxfKrva/017eefbsGdLT08Uup5wkGrJ2GNTGxgb29vZil8Oby5cvo7CwEIsXL5bNAeNtCCHYtGkTmjRpIunrdVVlbm6O7du3448//sCBAwfELkcvNWrUwLp165CWloakpCSxy+FdVlYW9uzZg3HjxqFOnTpil1NpDMPAw8MD//nPfzB//nw8fPhQ7JJ0or088Oeff+K3334Tuxy9DBgwAEqlkreXkPBBEg1ZrVbj2rVr8Pb2NorGBfxvXl1zc3N07dpV7HJ48fjxY2RmZmLevHlG8z3904ABA9C0aVN88sknsr5OxjAMJkyYgKZNm2Ly5MmSu5lOH4QQzJw5EyzLYs2aNbLLIsuy2LNnDxQKBTw9PWU3guHl5QULCwvMnTtXMo2sKpRKJQYNGoSvv/4aZWVlYpcDQCIN+ezZs9BoNJg2bZrYpfBGo9Hghx9+wKBBg/R+R6ZUaKf8FOO1ekJhWRbbt29HVlYWduzYIesDjkKhwO7du5GdnY2NGzfKelv+LjMzEwkJCfDz80Pt2rXFLqdK7OzssH79epw7d052j6iZmprC19cXqampePnypdjlVJl22LqkpATHjh0TuxwAPDdkQgjOnz+v88Pv69atg7m5efkbnYzB+fPnUVpaiqCgINn9gn8dQgi2bt2KFi1aoEaNGmKXY1DdunWDq6sr5s+fL7nnpnXVoUMHdO/eHSEhIUbxGBQhpHye4tDQUNnuWwzDwNfXF61atcKUKVNkNbsawzBYvHgxOI5DWFiY2OXopXXr1qhVqxZCQkIk8aOI14ZcUlKC3r176zQmz3EcUlNT0atXL8m9Cq+qtI9wWVhYoF27dmKXw4u7d+8iOzsbCxYskO1BsLIYhsHOnTvx8uVLrFu3ThI7alUxDIMdO3aguLgYwcHBst4WALh37x6+/fZbTJ8+Xfb3MWgft8vNzUVgYKCsvpu6deuiS5cu2LBhg2SGe6uCZVnMmDEDaWlpkphFjdcOaG5uDjc3N2zbtq3S16xu3bqFoqIiBAYGGs2BvqysDMeOHYO7u7vR/MjQzjY2bNgwsUsRRKtWrdCzZ08sX74cxcXFYpejl/feew8jR45EVFQUsrKyxC6nygghmDx5MkxNTbFkyRKjOF68//77mDJlCnbs2IHr16+LXU6lMQyD8PBw5OXlITk5Wexy9KJ9hHP16tWi/yjivVuEhYWhqKgIcXFxlfp8VFQUWJaFm5sb36WI5uzZs5IcriaE4MqVK3jx4oVOf8dxHGJiYtChQwfJPRdtKAzDYOvWreWvARV7R9UHwzCIjIwEwzCSnC6wsk6dOoXU1FQsWbJEkhPMVIX22V5ra2t4e3vL6nG7Dh06oF69epg9e7asf7TWrl0b3bp1w+bNm0X/7897Q3ZxcYGzszOCg4MrvHuQEII9e/agTZs2Oj+nK1Xa4WpLS0u0bt1a7HJeUVxcjO7du+v8KribN2/i5cuXOs02ZgyaNGmCLl26IDQ0VPZ3KdepUwczZ87EoUOHcPPmTbHL0VlpaSnGjh2LBg0a6DwpjdRZWlpi69atuH79OuLj48Uup9JYlsVXX32FO3fuyHqGO4ZhsGbNGuTn5+Pw4cOi1sJ7Q9ZuXGZmZoUzHmVkZCAnJwcLFy40mh2srKwMJ06cwNChQyU3XG1hYYEPP/wQUVFROv2iXb16NUxMTNCnTx8DVic9DMNgy5YtyM/PR3R0tNjl6IVhGCxZsgQ1atTAhAkTZHXwJIRg3bp1ePDgAWJjYyt8h6/cMAyDjz/+GC1btsSMGTMkOX/9mwwYMADz5s3Dzp07sXPnTlnl6u86dOgAW1tbBAUFiboNBukY7u7usLKyeuuNCn+fVnLw4MGGKIMXDx8+1GkY46effoJarcb8+fMl+SNjw4YNKC4uxpYtWyr1eY1Gg4SEBPTo0cNoRjF00bJlS7i6uuLzzz+X9XPJwF9nYqtWrcKFCxck+eq5N8nOzkZISAj69u2LHj16iF2OQbAsi//3//4fXrx4ofMIlpi0M9z16NED06ZNw9WrV2VT+9+xLIugoCD8+uuvok7WYpCGbGJigtmzZ+P8+fN4/Pjxaz/DcRz27duHHj16wMzMzBBl6C0/Px9dunTBqlWrKhUyQghWrFgBlUqFVq1aCVCh7po0aYJ27dph2bJllbo78urVqygoKKh2w9Va2rPkFy9eYPfu3WKXoxeGYTB58mQ4Ojpi4sSJol8vqwyNRoOxY8eCEIKYmBijzmDr1q0xdOhQrF27VlY335mYmODAgQOoU6cO+vfvj0OHDskiW//k7+8PhUIh6iNQBhtTDQwMBMuyb3zU4ueff0ZhYSFCQkIku5OpVCp06tQJISEhOHv2bIVf0oMHD3Dy5En4+flJdpu0N/i8ePEChw4deutntT8wzMzM8OGHHwpUofS0b98eLi4umD9/vqwf8QD+mp1o27ZtuHPnDvbs2SPpsxlCCJYtW4bU1FSEhYXBwcFB7JIMSnsjIcMwmDJliqS/m3+ysbHB4cOH4eTkBC8vL0yZMgXZ2dmy2gaVSgUPDw/Exsbi3LlzotRusIZcs2ZNjBgxArt37/7XhASEECxduhQWFhbo0qWLoUrQm/Z51AYNGmD48OF49uzZGz9LCEFAQACUSqVkX5Su1blzZ7z77ruYM2fOW2+8e/DgAZKSkuDj42M0s41VBcMw2Lx5M54+fSr7Oa4BoH///mjdujVmzZol2YlPCCFISkrC8uXLMWbMGKN6C9zb2NnZYd68eUhKSpLdzXctWrTAqVOnMHfuXMTFxaFr165IS0uTTVNmGAbR0dFo0KABhg4diidPngheg8EasvZ2/rKyMqxZs+aVL0WtVuPo0aP4+OOPJX+gr1GjBr777jvk5ubCw8PjjWdIf/75J1JSUjBr1izUrFlT4Cp1w7Is1q1bh/v37+PUqVOv3WEIIZg4cSJMTEwQHh5eLQ6Gb/Phhx/C2dkZgYGBshyO+zuWZREbG4sXL15g+fLlBjtg5uTkVGnZhBD8/vvvGD16NFq3bo3o6GjJ3SBpKAzDYOHChbC0tISfn59smhnwV+01atRAaGgoDh8+DLVajd69eyM2NlY283XXrFkTKSkpKCwshLu7u+A/WA2acicnJ7i5uSE8PPyVx0a0X5Zc7q52cXFBZGQkTp48iSVLlvxrJyGEYMqUKTA3N5fNtVZ3d3c4OTlh9OjRr30u+fz58zh27BhCQkJk8a5ZQ2NZFpGRkXj06BFSUlLELkdvrVu3xuDBg7FmzRo8ffqU9+WXlpaie/fuWLNmjU6PjBFCcObMGfTu3RtmZmb47rvvJP0ebUOwsLBASEgIzpw5g19++UXscnTGMAzc3Nxw5swZtG/fHpMmTcK8efNkc7mnWbNm2LVrFy5fvgx/f388evRIsB9GBm3I2uuVBQUF2LVrFwghyMnJwaJFi1C7dm3ZzF2tnXfW19cXoaGhiIqKeuULunnzJo4fP4758+dDpVKJWGnlmZiYICkpCTk5OfDy8nrlrE97I429vb3RPfOpj759+8LJyQmffPKJbH7xv4l2eE57qYXvAw4hBC4uLliwYAGGDh2Ku3fvVrgOjuOwfft29OvXDxYWFjh69CgcHR15rUsOGIbBp59+ilq1amHSpEmyOkvWYhgG9evXR0pKCgICArBu3ToEBATI4kkFhmEwYsQIBAUFIT4+Hu3bt8fq1aurPOKjC4OPA7Vs2RIuLi5YtGgRzp49i27duuHWrVtYtWqVrIahWJbF5s2bMXDgQMyaNQsHDhxAfn4+vv32W3h6ekKlUuGzzz6TVfNq06YNNmzYgNTUVKxcuRIajQY5OTmIjo7G7du3sW3btmr5qNObsCyLjRs34u7duzhx4oTY5ejN3t4egYGBOHjwIO/vtjUzM8PevXsRGRmJs2fPokuXLoiMjMQff/wBjUYDQkj5/4qKivDjjz/C19cX/v7++PDDD3H69Gm0adNGVvsTn8zMzLBy5UpcunQJFy5cELucKrOwsMD69euxcOFCbN++Hf7+/rJpyl988QVOnDiBdu3aYfHixWjfvj0WLVqE69evo6ys7JUM88WEtyW9AcMwiIiIQO/evdGnTx84ODggOTkZH330kaFXzTtTU1PEx8ejd+/eGDt2LJo0aYIbN27gnXfeQVRUlOyG1rR3c544cQJLlizB+fPn8d///heZmZlo3749Bg0aJHaJkjNkyBDY29tj2rRp+Pzzz8UuRy/a189t3boVY8eOxZw5c3hdvomJCaZOnYquXbsiICAA8+bNQ0hICNzc3ODi4gJCCDiOw8mTJ3Ht2jVYW1sjMDCw/D3i1Z2fnx8WL14MPz8/LFiwQOxyqkyhUGDZsmVQKBT44osvoNFo0Lt3b7HLqhDLsujcuTO+/vprnDhxAhEREeX/69SpE2xtbWFjYwMbGxs0bdqUl3UavCEDQM+ePdG+fXu8++67iIyMhL29vWx/+apUKiQnJ6NPnz6wsrLCzp07MWjQIFhbW8tym1iWxY4dO5CRkYH79++jb9++cHNzQ//+/WU1giEUhUKBtWvXYsGCBbJ+F6yW9gwmODhY5znOK4NhGLRu3RrHjx/HtWvXkJCQgKSkJFy8eLF8f2nYsCHWrVuHoUOHwtHRUZb7kSEolUqEh4dj4cKFss8ay7IICQmBQqFAREQEOnbsKHZJlaadpbBXr164efMm9uzZg1OnTuH69evIz89HYWEh1qxZw8+6eFnK/7l06dIb/83Pzw9mZmY4evQon6v8l8uXL8PLy4uXZb1te/z9/cun8DPk206E2p4pU6aAZVmYm5uDYRgcOXKEl3X+E1/b87ZtMbSysjLMmjULGRkZvDUPMbeHYRjMnDkTt2/fNvj2tGnTBs7OzigqKipfV82aNWFmZsb7ZQBjyBrHcUaVtYYNGyIgIECQrBlK8+bN0bhxY5SVlaGkpATFxcW4evUqRo8erfeyGcLTADgh5I2zcgnNwcFB7y+bbo/h6Ls9xrQtAN0eQ6JZexXdHsPhY3t4a8gURVEURVUdvUhIURRFURIgmYb84MEDWFtbw9bWFvfu3RO7HF60aNECLVq0ELsMvd27dw916tRB7dq18eDBA7HL0RvNmnTRrElf8+bNJfvyHF1IMWuSachOTk6IjY1FTk4OPD09Zf9CeGNRWlqKkSNH4tmzZ4iNjYWTk5PYJemNZk2aaNbkQaPRwMREkAd0DEaqWZNMQwb+esZz/vz5uHDhAubOnSt2ORSAOXPm4OLFiwgKCoK7u7vY5fCGZk16aNbkoaysTPYNWbJZIxKjVqtJ9+7dCQCyb98+scvRi4uLC3FxcRG7jCrbu3cvAUB69OhB1Gq12OXwjmZNOmjW5MPJyYl07txZ7DKqTMpZk+Rd1o8ePUK7du1QUFCAtLQ02cx5/U/aa3rXr18XuRLd3bhxAx06dICVlRWuXLlitO+ipVkTH82avNSrVw/Ozs44ffq02KXoTOpZk9SQtVa9evUQHx+PwsJCeHh4oKCgQOySqpX8/Hx4eHiguLgY8fHxkgstn2jWxEWzJj9yvYYsh6xJsiEDQI8ePRAaGorr16/D399flm88kSNCCKZOnYrffvsNoaGh6N69u9glGRzNmjho1uSZNTleQ5ZN1sQbLa+YRqMh7u7uBADZsmWL2OXoTI7X9TZv3kwAkCFDhhCO48QuRzA0a8KjWZNn1qysrEi/fv3ELkMncsmapBsyIYQ8e/aMNGrUiJiampK0tDSxy9GJ3A6SaWlpxNTUlDRq1Ig8f/5c7HIER7MmHJo1+WbNwsKCDBw4UOwyKk1OWZPskLVW7dq1kZiYCIZh4OHhgWfPnoldklF69uwZPDw8wDAMEhMTYW1tLXZJgqNZEwbNmryzJqcha7llTfINGQBcXV3LXww/fvx4cBwndklGheM4jBs3Dnfv3kVERARcXV3FLkk0NGuGRbP2P3LNmlxu6pJl1sQ+Ra8sjuPIuHHjCAASGhoqdjmVIpdhxBUrVhAAZPz48ZK+viIUmjXDoVl7ldyyptFoCADi6ekpdikVkmPWZNOQCSEkPz+ftGzZkrAsS44fPy52ORWSw0Hy2LFjhGVZ0qpVK1JQUCB2OZJBs8Y/mrXXk1PWSktLCQDi4+MjdilvJdesyWLIWkulUiExMREqlQre3t7IzMwUuyRZy8zMhI+PT/l/V0tLS7FLkgyaNX7RrL2ZnLJWVlYGAJIespZz1mTVkAGgWbNm2L59O7KysuDt7V0eEEo3arUaXl5eyMrKwo4dO9C0aVOxS5IcmjV+0KxVTC5Z02g0AKTbkGWfNbFP0atq5syZBACZN2+e2KW8kZSHEefOnUsAkFmzZoldiuTRrOmHZq3ypJ6158+fEwBk8uTJYpfyWnLPmmwbcklJCenSpQsBQA4dOiR2Oa8l1YPkwYMHCQDSpUsXUlJSInY5kkezVnU0a7qRetays7MJABIQECB2Kf9iDFmT5MslKuv+/ftwdXWFWq3GpUuX4OzsLHZJr5DihP+3b9+Gq6srTE1NceXKFcm8B1TqaNZ0R7NWNVLO2uPHj1GvXj3MmDEDERERYpdTzliyJrtryH/XoEED7NmzB7m5ufDw8EBRUZHYJUlaUVERRowYgby8PMTFxck2tGKgWdMNzVrVSTlrUryGbExZk3VDBoC+ffsiJCQEV69exaeffip2OZL2ySef4Nq1a1iyZAn69OkjdjmyQ7NWeTRr+pFq1qR4l7VRZU3sMXM+aDQa0q9fPwKA7Ny5U+xyyknput6OHTsIANKvXz+i0WjELke2aNYqRrPGDylmLSMjgwAgQUFBYpdCCDG+rBlFQybkr5sNnJyciLm5Obl27ZrY5RBCpHOQvHr1KjE3NycNGjQg2dnZYpcjezRrb0azxi+pZS09PZ0AIIsWLRK7FKPMmuyHrLVsbW2RkJCAsrIyjBgxAi9fvhS7JEl4+fIlPDw8oNFosH//ftja2opdkuzRrL0ezRr/pJY1qVxDNtasGU1DBoDOnTsjLCwMGRkZmDRpkixf/s0nQgh8fX2RkZGBsLAwdO7cWeySjAbN2qto1gxHSlmTwjVko86amKfnhsBxHPH09CQASHh4uKi1iD2MGBYWRgAQLy8v2UyuLic0a/9Ds2ZYUsnapUuXCACycuVK0Wow5qwZXUMmhJDc3FzSrFkzYmJiQk6fPi1aHWIeJH/66SeiUChIs2bNSG5urig1VAc0azRrQpFC1i5cuEAAkNWrV4uyfmPPmlENWWtZWVkhMTERpqam5fOaVidZWVnw8vKCmZkZDhw4ACsrK7FLMlo0azRrQpFC1sS8hlwdsmaUDRkAWrZsiS1btuDhw4cYNWpUeZCMnUajwahRo5CZmYno6OjyGZwow6FZo1kTithZE+sacrXJmtin6Ibm7+9PAJDFixcLvm4xhhGDg4MJADJ16lRB10vRrFHCEStrx48fJwBIVFSUoOutLlkz+oZcVFREXF1dCQCSkpIi6LqFPkimpKQQAOSDDz4gRUVFgq2X+gvNGiUUsbJ25MgRAoBs3bpVsHVWp6wZ7ZC1lrm5ORITE2FtbY0xY8bg7t27YpdkEHfv3sWYMWNQu3ZtJCYmwtzcXOySqh2aNUooYmVN6CHr6pY1o2/IANCoUSPExsbi2bNn8PT0RElJidgl8aqkpAQjR47Es2fPEBsbi4YNG4pdUrVFs0YJRYysCXlTV3XMWrVoyADg7u6OoKAgXLx4EXPnzhW7HF7NmTMHaWlpWLBgAQYPHix2OdUezRolFKGzJuQZcrXMmthj5kJSq9WkZ8+eBADZu3evwdcnxHW9uLg4AoB89NFHRK1WG3RdVOXRrFFCETJrCQkJBADZt2+fQddTXbNWbc6Qgb9+1e3duxcODg7w8/PDjRs3xC5JL7/99hsmT56MevXqIS4uTvT5Zan/oVmjhCJk1oQ4Q67OWatWDRkAHBwcEB8fj+LiYowYMQL5+flil1Ql+fn58PDwQHFxMeLj4+Hg4CB2SdQ/0KxRQhEqa4a+hlzds1btGjIAdO/eHStXrsSNGzcwdepU2b0YgBCCKVOm4MaNG1i1ahXc3NzELol6A5o1SihCZM2QZ8g0a6he15D/juM4MnToUIM+5G6o63qbNm0iAMiwYcOMbnJ1Y0SzRgnF0Fn76quvCADy/fff875smrVqMDHI2zx//py89957xNTUlFy8eJH35RviIHnhwgWiVCqJs7Mzef78Oa/LpgyHZo0SiiGztmXLFgKApKam8rpcmrW/VMshay1ra2skJiaCYZjy592kLCcnByNHjgTLsuWTAlDyQLNGCcWQWTPENWSatf+p1g0ZANq1a4fIyEjcvXsXY8eOBcdxYpf0WhzHYezYsbh37x42bdqEtm3bil0SpSOaNUoohsoa39eQadb+QexTdCngOI6MHz+eACArVqzgbbl8DiMuX76cACATJkyottdXjAHNGiUUQ2QtLCyMACDnzp3jZXk0a6+iDfn/FBQUkFatWhGWZcmxY8d4WSZfB8mjR48SlmVJ69atSUFBAQ+VUWKiWaOEwnfWvvzySwKAl2vTNGv/Vu2HrLUsLS2RmJgIlUoFHx8fPHz4UOySAAAPHz6Ej48PVCoVEhMTYWlpKXZJlJ5o1iih8J01vq4h06y9Hm3If9O0aVPs2LEDWVlZ8Pb2hlqtFrUetVoNLy8vZGdnIyYmBk2aNBG1Hoo/NGuUUPjMGh/XkGnW3ow25H/w8PBAYGAgTp8+jYULF4pay4IFC3DmzBnMnj0bH3/8sai1UPyjWaOEwlfW+GjINGtvIfaYuRSVlpaSrl27EgDk4MGDVV6OPtf1Dhw4QACQrl27ktLS0irXQEkbzRolFD6ytnDhQgKA3Lx5s0p/T7P2dvQM+TWUSiXi4+Nha2uLCRMmICMjQ9D137p1CxMnToSdnR32798PpVIp6Pop4dCsUULhI2v6XEOmWasYbchv4OTkhLi4OOTl5cHDwwNFRUWCrLeoqAgeHh7Iy8tDXFwc6tevL8h6KfHQrFFC0TdrVR2yplmrHNqQ36JPnz5YunQprl27hhkzZgiyzunTp+OXX37BsmXL8J///EeQdVLio1mjhKJP1qrakGnWKknsMXOp02g0pF+/fgQA2b59u05/q+t1ve3btxMAZMCAAUSj0ehaKiVzNGuUUKqatenTpxMA5PHjx5X+G5q1yqMNuRKys7NJgwYNiLm5Obl69Wql/06Xg+SVK1eIubk5eeedd8jTp0+rWiolczRrlFCqkrWpU6cSAJXODc2abuiQdSXY2toiISEBGo0GHh4eePnyJa/Lf/nyJTw8PKDRaJCQkIA6derwunxKPmjWKKFUJWu6DFnTrOmONuRK6tSpE8LDw5GRkQFfX1/eXv5NCMGECRNw+/ZtrFu3Dh07duRluZR80axRQtE1a5VtyDRrVSTm6bnccBxHvL29CQASFhZW4ecrM4y4du1aAoB4e3vTydWpcjRrlFB0ydqYMWMIAFJUVPTWz9GsVQ1tyDrKzc0lzZs3JwqFgvz0009v/WxFB8mffvqJKBQK8v7775O8vDy+S6VkjmaNEkpls6Zt3Gq1+o2foVmrOjpkrSMrKyskJibCzMwMXl5eyMrKqtJynjx5Ak9PT5iZmSExMRE1atTguVJK7mjWKKFUNmvaiUEUCsVr/51mTT+0IVdBixYtEB0djczMTPj4+JSHtLI0Gg18fHzw6NEjbNu2DS4uLgaqlJI7mjVKKJXJWllZGRQKBRiG+de/0azxQOxTdDkLCAggAEhwcPBr//1Nw4iLFi0iAMi0adMMXSJlJGjWKKG8LWvu7u7E1NT0tX9Hs6Y/2pD1UFxcTNq3b08AkOTk5PL/v7S0lBw6dIjUrVuX2NrakpUrV5JDhw6R0tJS8t133xEApH379qS4uFjE6ik5oVmjhPK6rGlz1rRpU6JUKl/JGSGEZo0nDCE8PVNRTd25cweurq4AgB9++AHJycnYvHkzsrOzyz9jYmKCsrIy2NjYoLCwEObm5rhy5QoaNmwoUtWUHNGsUULRZo0QgnHjxmHv3r3Izs4GwzAghJTnzM7ODj4+PoiNjQXDMLh8+TLNmh5oQ+ZBcnIyBg8eDJb965I8x3Fv/by5uTm+//579OzZU4DqKGNCs0YJZeXKlTq9O3nlypUICgoyYEXGj97UxQOVSgWGYcBxXIUHSAAoLS1Fnz59cPLkScMXRxkVmjVKCCdPnsTnn3+u098sXryY5kxP9AxZT5mZmWjWrBkKCgp0mlGJZVmoVCqkp6fD0dHRgBVSxoJmjRKCNmeFhYWV+tGnRXOmP3qGrKetW7eiqKhI5+kNOY5DQUEBoqOjDVQZZWxo1ighaHOmSzMGaM74QM+Q9aBWq1G/fv1XbqrRVd26dfHgwQMolUoeK6OMDc0aJQSaM3HRM2Q9JCcn6xVcAMjKykJKSgpPFVHGimaNEgLNmbhoQ9ZDenp6pV5D9jYKhQLp6ek8VUQZK5o1Sgg0Z+KiDVkP+fn5r51CThcsyyIvL4+niihjRbNGCYHmTFy0IeuhRo0aer+rluM4WFlZ8VQRZaxo1igh0JyJizZkPTRv3rz8hd1VpdFo0Lx5c54qoowVzRolBJozcdG7rPVA70ikhEKzRgmB5kxc9AxZD0qlEgEBAW98N2hFWJZFQEAADS5VIZo1Sgg0Z+KiZ8h6orPaUEKhWaOEQHMmHnqGrCdHR0ckJSWBZdnyCf8rov1sUlISDS5VaTRrlBBozsRDGzIPevbsidTUVKhUqgqHerS/Io8ePYoePXoIVCFlLGjWKCHQnImDNmSe9OzZE+np6QgODoadnR2Avx6QVyqV5YGuW7cuFi9ejPT0dBpcqspo1igh0JwJj15DNgC1Wo2UlBSkp6cjLy8PVlZWaN68OQYOHEhvdqB4RbNGCYHmTBi0IVMURVGUBNAha4qiKIqSANqQKYqiKEoCaEOmKIqiKAmgDZmiKIqiJIA2ZIqiKIqSANqQKYqiKEoCaEOmKIqiKAmgDZmiKIqiJIA2ZIqiKIqSANqQKYqiKEoCaEOmKIqiKAmgDZmiKIqiJIA2ZIqiKIqSANqQKYqiKEoCaEOmKIqiKAmgDZmiKIqiJOD/AwZ0ev3PedALAAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<Figure size 600x720 with 22 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "model.plot(beta=100,scale=0.6,sample=False)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "a5a9d743",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Best value at boundary.\n",
      "r2 is 0.8058154313508333\n",
      "r2 is not very high, please double check if you are choosing the correct symbolic function.\n",
      "Best value at boundary.\n",
      "r2 is 0.8194254961416927\n",
      "r2 is not very high, please double check if you are choosing the correct symbolic function.\n",
      "Best value at boundary.\n",
      "r2 is 0.49920824973984773\n",
      "r2 is not very high, please double check if you are choosing the correct symbolic function.\n",
      "Best value at boundary.\n",
      "r2 is 0.772820555743239\n",
      "r2 is not very high, please double check if you are choosing the correct symbolic function.\n",
      "Best value at boundary.\n",
      "r2 is 0.7748374674835091\n",
      "r2 is not very high, please double check if you are choosing the correct symbolic function.\n",
      "Best value at boundary.\n",
      "r2 is 0.781949254036102\n",
      "r2 is not very high, please double check if you are choosing the correct symbolic function.\n",
      "Best value at boundary.\n",
      "r2 is 0.8775439257910191\n",
      "r2 is not very high, please double check if you are choosing the correct symbolic function.\n",
      "Best value at boundary.\n",
      "r2 is 0.871171033700541\n",
      "r2 is not very high, please double check if you are choosing the correct symbolic function.\n",
      "Best value at boundary.\n",
      "r2 is 0.8038547298205801\n",
      "r2 is not very high, please double check if you are choosing the correct symbolic function.\n",
      "r2 is 0.8677536436061618\n",
      "r2 is not very high, please double check if you are choosing the correct symbolic function.\n",
      "r2 is 0.8959248405140879\n",
      "r2 is not very high, please double check if you are choosing the correct symbolic function.\n",
      "Best value at boundary.\n",
      "r2 is 0.9813887450816172\n"
     ]
    }
   ],
   "source": [
    "for i in range(3):\n",
    "    for j in range(3):\n",
    "        model.fix_symbolic(0,i,j,'x')\n",
    "\n",
    "'''model.fix_symbolic(0,0,0,'sin')\n",
    "model.fix_symbolic(0,0,1,'sin')'''\n",
    "        \n",
    "for i in range(3):\n",
    "    model.fix_symbolic(1,i,0,'sin')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "f47bc600",
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "pde loss: 4.44e+01 | bc loss: 3.27e-02 | l2: 5.07e-02 :  70%|▋| 7/10 [00:39<00:1\n"
     ]
    },
    {
     "ename": "KeyboardInterrupt",
     "evalue": "",
     "output_type": "error",
     "traceback": [
      "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
      "\u001b[0;31mKeyboardInterrupt\u001b[0m                         Traceback (most recent call last)",
      "\u001b[0;32m/var/folders/6j/b6y80djd4nb5hl73rv3sv8y80000gn/T/ipykernel_91602/3364925475.py\u001b[0m in \u001b[0;36m<module>\u001b[0;34m\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mtrain\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m",
      "\u001b[0;32m/var/folders/6j/b6y80djd4nb5hl73rv3sv8y80000gn/T/ipykernel_91602/3418025496.py\u001b[0m in \u001b[0;36mtrain\u001b[0;34m()\u001b[0m\n\u001b[1;32m     93\u001b[0m             \u001b[0mpbar\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mset_description\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"pde loss: %.2e | bc loss: %.2e | l2: %.2e \"\u001b[0m \u001b[0;34m%\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0mpde_loss\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mcpu\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mdetach\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mnumpy\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mbc_loss\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mcpu\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mdetach\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mnumpy\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0ml2\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mdetach\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mnumpy\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m     94\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 95\u001b[0;31m         \u001b[0moptimizer\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mstep\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mclosure\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m     96\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m     97\u001b[0m \u001b[0mtrain\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
      "\u001b[0;32m~/opt/anaconda3/lib/python3.9/site-packages/torch/optim/optimizer.py\u001b[0m in \u001b[0;36mwrapper\u001b[0;34m(*args, **kwargs)\u001b[0m\n\u001b[1;32m    383\u001b[0m                             )\n\u001b[1;32m    384\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 385\u001b[0;31m                 \u001b[0mout\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mfunc\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m    386\u001b[0m                 \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_optimizer_step_code\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m    387\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n",
      "\u001b[0;32m~/opt/anaconda3/lib/python3.9/site-packages/torch/utils/_contextlib.py\u001b[0m in \u001b[0;36mdecorate_context\u001b[0;34m(*args, **kwargs)\u001b[0m\n\u001b[1;32m    113\u001b[0m     \u001b[0;32mdef\u001b[0m \u001b[0mdecorate_context\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m    114\u001b[0m         \u001b[0;32mwith\u001b[0m \u001b[0mctx_factory\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 115\u001b[0;31m             \u001b[0;32mreturn\u001b[0m \u001b[0mfunc\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m    116\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m    117\u001b[0m     \u001b[0;32mreturn\u001b[0m \u001b[0mdecorate_context\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
      "\u001b[0;32m~/Desktop/2022/research/code/kolmogorov-arnold-network/kan/LBFGS.py\u001b[0m in \u001b[0;36mstep\u001b[0;34m(self, closure)\u001b[0m\n\u001b[1;32m    431\u001b[0m                         \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_directional_evaluate\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mclosure\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mx\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mt\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0md\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m    432\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 433\u001b[0;31m                     loss, flat_grad, t, ls_func_evals = _strong_wolfe(\n\u001b[0m\u001b[1;32m    434\u001b[0m                         obj_func, x_init, t, d, loss, flat_grad, gtd)\n\u001b[1;32m    435\u001b[0m                 \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_add_grad\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mt\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0md\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
      "\u001b[0;32m~/Desktop/2022/research/code/kolmogorov-arnold-network/kan/LBFGS.py\u001b[0m in \u001b[0;36m_strong_wolfe\u001b[0;34m(obj_func, x, t, d, f, g, gtd, c1, c2, tolerance_change, max_ls)\u001b[0m\n\u001b[1;32m     48\u001b[0m     \u001b[0mg\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mg\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mclone\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mmemory_format\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mtorch\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mcontiguous_format\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m     49\u001b[0m     \u001b[0;31m# evaluate objective and gradient using initial step\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 50\u001b[0;31m     \u001b[0mf_new\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mg_new\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mobj_func\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mx\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mt\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0md\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m     51\u001b[0m     \u001b[0mls_func_evals\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;36m1\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m     52\u001b[0m     \u001b[0mgtd_new\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mg_new\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mdot\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0md\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
      "\u001b[0;32m~/Desktop/2022/research/code/kolmogorov-arnold-network/kan/LBFGS.py\u001b[0m in \u001b[0;36mobj_func\u001b[0;34m(x, t, d)\u001b[0m\n\u001b[1;32m    429\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m    430\u001b[0m                     \u001b[0;32mdef\u001b[0m \u001b[0mobj_func\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mx\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mt\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0md\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 431\u001b[0;31m                         \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_directional_evaluate\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mclosure\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mx\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mt\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0md\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m    432\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m    433\u001b[0m                     loss, flat_grad, t, ls_func_evals = _strong_wolfe(\n",
      "\u001b[0;32m~/Desktop/2022/research/code/kolmogorov-arnold-network/kan/LBFGS.py\u001b[0m in \u001b[0;36m_directional_evaluate\u001b[0;34m(self, closure, x, t, d)\u001b[0m\n\u001b[1;32m    281\u001b[0m     \u001b[0;32mdef\u001b[0m \u001b[0m_directional_evaluate\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mclosure\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mx\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mt\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0md\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m    282\u001b[0m         \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_add_grad\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mt\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0md\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 283\u001b[0;31m         \u001b[0mloss\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mfloat\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mclosure\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m    284\u001b[0m         \u001b[0mflat_grad\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_gather_flat_grad\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m    285\u001b[0m         \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_set_param\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mx\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
      "\u001b[0;32m~/opt/anaconda3/lib/python3.9/site-packages/torch/utils/_contextlib.py\u001b[0m in \u001b[0;36mdecorate_context\u001b[0;34m(*args, **kwargs)\u001b[0m\n\u001b[1;32m    113\u001b[0m     \u001b[0;32mdef\u001b[0m \u001b[0mdecorate_context\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m    114\u001b[0m         \u001b[0;32mwith\u001b[0m \u001b[0mctx_factory\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 115\u001b[0;31m             \u001b[0;32mreturn\u001b[0m \u001b[0mfunc\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m    116\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m    117\u001b[0m     \u001b[0;32mreturn\u001b[0m \u001b[0mdecorate_context\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
      "\u001b[0;32m/var/folders/6j/b6y80djd4nb5hl73rv3sv8y80000gn/T/ipykernel_91602/3418025496.py\u001b[0m in \u001b[0;36mclosure\u001b[0;34m()\u001b[0m\n\u001b[1;32m     66\u001b[0m             \u001b[0mloss\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0malpha\u001b[0m \u001b[0;34m*\u001b[0m \u001b[0mpde_loss\u001b[0m \u001b[0;34m+\u001b[0m \u001b[0mbc_loss\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m     67\u001b[0m             \u001b[0;31m#exec(code)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 68\u001b[0;31m             \u001b[0mloss\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mbackward\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m     69\u001b[0m             \u001b[0;32mreturn\u001b[0m \u001b[0mloss\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m     70\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n",
      "\u001b[0;32m~/opt/anaconda3/lib/python3.9/site-packages/torch/_tensor.py\u001b[0m in \u001b[0;36mbackward\u001b[0;34m(self, gradient, retain_graph, create_graph, inputs)\u001b[0m\n\u001b[1;32m    520\u001b[0m                 \u001b[0minputs\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0minputs\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m    521\u001b[0m             )\n\u001b[0;32m--> 522\u001b[0;31m         torch.autograd.backward(\n\u001b[0m\u001b[1;32m    523\u001b[0m             \u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mgradient\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mretain_graph\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mcreate_graph\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0minputs\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0minputs\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m    524\u001b[0m         )\n",
      "\u001b[0;32m~/opt/anaconda3/lib/python3.9/site-packages/torch/autograd/__init__.py\u001b[0m in \u001b[0;36mbackward\u001b[0;34m(tensors, grad_tensors, retain_graph, create_graph, grad_variables, inputs)\u001b[0m\n\u001b[1;32m    264\u001b[0m     \u001b[0;31m# some Python versions print out the first line of a multi-line function\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m    265\u001b[0m     \u001b[0;31m# calls in the traceback and some print out the last line\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 266\u001b[0;31m     Variable._execution_engine.run_backward(  # Calls into the C++ engine to run the backward pass\n\u001b[0m\u001b[1;32m    267\u001b[0m         \u001b[0mtensors\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m    268\u001b[0m         \u001b[0mgrad_tensors_\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
      "\u001b[0;31mKeyboardInterrupt\u001b[0m: "
     ]
    }
   ],
   "source": [
    "train()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "3a523487",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "id": "24b4b817",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "tensor([[-1.0000, -1.0000, -1.0000],\n",
       "        [-1.0000, -1.0000, -0.8000],\n",
       "        [-1.0000, -1.0000, -0.6000],\n",
       "        ...,\n",
       "        [ 1.0000,  0.6000,  1.0000],\n",
       "        [ 1.0000,  0.8000,  1.0000],\n",
       "        [ 1.0000,  1.0000,  1.0000]])"
      ]
     },
     "execution_count": 19,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "import torch\n",
    "\n",
    "ranges = [-1,1]\n",
    "np_i = 11\n",
    "np_b = 11\n",
    "# interior\n",
    "x_mesh = torch.linspace(ranges[0],ranges[1],steps=np_i)\n",
    "y_mesh = torch.linspace(ranges[0],ranges[1],steps=np_i)\n",
    "z_mesh = torch.linspace(ranges[0],ranges[1],steps=np_i)\n",
    "X, Y, Z = torch.meshgrid(x_mesh, y_mesh, z_mesh, indexing=\"ij\")\n",
    "x_i = torch.stack([X.reshape(-1,), Y.reshape(-1,), Z.reshape(-1,)]).permute(1,0)\n",
    "\n",
    "helper = lambda X, Y, Z: torch.stack([X.reshape(-1,), Y.reshape(-1,), Z.reshape(-1,)]).permute(1,0)\n",
    "xb1 = helper(X[0], Y[0], Z[0])\n",
    "xb2 = helper(X[-1], Y[0], Z[0])\n",
    "xb3 = helper(X[:,0], Y[:,0], Z[:,0])\n",
    "xb4 = helper(X[:,0], Y[:,-1], Z[:,0])\n",
    "xb5 = helper(X[:,:,0], Y[:,:,0], Z[:,:,0])\n",
    "xb6 = helper(X[:,:,0], Y[:,:,0], Z[:,:,-1])\n",
    "x_b = torch.cat([xb1, xb2, xb3, xb4, xb5, xb6], dim=0)\n",
    "x_b"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "611e0018",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "27935c79",
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "pde loss: 6.87e-01 | bc loss: 1.78e-05 | l2: 2.59e-04 :  10%| | 10/100 [00:10<01"
     ]
    }
   ],
   "source": [
    "optimizer = LBFGS(model.parameters(), lr=1, history_size=10, line_search_fn=\"strong_wolfe\", tolerance_grad=1e-32, tolerance_change=1e-32, tolerance_ys=1e-32)\n",
    "\n",
    "pbar = tqdm(range(steps), desc='description')\n",
    "\n",
    "alpha = 0.0001\n",
    "\n",
    "for _ in pbar:\n",
    "    def closure():\n",
    "        optimizer.zero_grad()\n",
    "        # interior loss\n",
    "        sol = sol_fun(x_i)\n",
    "        sol_D1_fun = lambda x: batch_jacobian(model, x, create_graph=True)[:,0,:]\n",
    "        sol_D1 = sol_D1_fun(x_i)\n",
    "        sol_D2 = batch_jacobian(sol_D1_fun, x_i, create_graph=True)[:,:,:]\n",
    "        lap = torch.sum(torch.diagonal(sol_D2, dim1=1, dim2=2), dim=1, keepdim=True)\n",
    "        source = source_fun(x_i)\n",
    "        pde_loss = torch.mean((lap - source)**2)\n",
    "\n",
    "        # boundary loss\n",
    "        bc_true = sol_fun(x_b)\n",
    "        bc_pred = model(x_b)\n",
    "        bc_loss = torch.mean((bc_pred-bc_true)**2)\n",
    "\n",
    "        loss = alpha * pde_loss + bc_loss\n",
    "        #exec(code)\n",
    "        loss.backward()\n",
    "        return loss\n",
    "    \n",
    "    #if _ % 5 == 0 and _ < 50:\n",
    "    #    model.update_grid_from_samples(x_i)\n",
    "    \n",
    "    # interior loss\n",
    "    sol = sol_fun(x_i)\n",
    "    sol_D1_fun = lambda x: batch_jacobian(model, x, create_graph=True)[:,0,:]\n",
    "    sol_D1 = sol_D1_fun(x_i)\n",
    "    sol_D2 = batch_jacobian(sol_D1_fun, x_i, create_graph=True)[:,:,:]\n",
    "    lap = torch.sum(torch.diagonal(sol_D2, dim1=1, dim2=2), dim=1, keepdim=True)\n",
    "    source = source_fun(x_i)\n",
    "    pde_loss = torch.mean((lap - source)**2)\n",
    "\n",
    "    # boundary loss\n",
    "    bc_true = sol_fun(x_b)\n",
    "    bc_pred = model(x_b)\n",
    "    bc_loss = torch.mean((bc_pred-bc_true)**2)\n",
    "\n",
    "    loss = alpha * pde_loss + bc_loss\n",
    "    \n",
    "    l2 = torch.mean((model(x_i) - sol)**2)\n",
    "    \n",
    "    if _ % log == 0:\n",
    "        pbar.set_description(\"pde loss: %.2e | bc loss: %.2e | l2: %.2e \" % (pde_loss.cpu().detach().numpy(), bc_loss.cpu().detach().numpy(), l2.detach().numpy()))\n",
    "    \n",
    "    optimizer.step(closure)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 173,
   "id": "4832f59a",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "torch.Size([11, 2])"
      ]
     },
     "execution_count": 173,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": 165,
   "id": "50b4e84b",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "torch.Size([10201, 1])"
      ]
     },
     "execution_count": 165,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "lap.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 166,
   "id": "c7f39e64",
   "metadata": {},
   "outputs": [],
   "source": [
    "laplacian = torch.diagonal(sol_D2, dim1=1,dim2=2)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 141,
   "id": "af7fbc6b",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "torch.Size([10201, 2, 2])"
      ]
     },
     "execution_count": 141,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "sol_D2.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 127,
   "id": "9045e53e",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.image.AxesImage at 0x7fa5dce93550>"
      ]
     },
     "execution_count": 127,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAbUAAAGgCAYAAAAtsfn1AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjYuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8o6BhiAAAACXBIWXMAAA9hAAAPYQGoP6dpAABcdUlEQVR4nO2df5DdVXn/n8/n3t1NQmNaYNgkkmCYCYOCPzChTAMj8WuJo2Dr0PEXKKj9AxpQYqxIjK0rA4nyB81UKxbGAaY0xemILXask/grytApGIhimAm1poDWTMY2JViS3bv3nu8fW+4+5/3s5zn72b27m5x9v2Yys2fP+Xw+555z7p58nvdznqcIIQQhhBBCMqCc6w4QQgghvYKbGiGEkGzgpkYIISQbuKkRQgjJBm5qhBBCsoGbGiGEkGzgpkYIISQbuKkRQgjJBm5qhBBCsoGbGiGEkGyY003tS1/6kqxatUoWLFgga9askR/+8Idz2R1CCCEnOc25evBXv/pV2bRpk3zpS1+Siy++WP76r/9a3va2t8nTTz8tK1eudK/tdDryn//5n7J48WIpimKWekwIIaRXhBDkxRdflOXLl0tZ9u79qpirgMYXXXSRvPGNb5S77rqr+7tXv/rV8s53vlO2b9/uXvuLX/xCVqxYMdNdJIQQMsM8//zzcuaZZ/bsfnPypjYyMiJ79+6VW265Jfr9hg0b5NFHHzXth4eHZXh4uFt+eR8+c+jTUi5YMLOdJYQQ0nM6x4/LL4Zuk8WLF/f0vnOyqf3617+Wdrstg4OD0e8HBwfl0KFDpv327dvls5/9rPl9uWABNzVCCDmJ6bWENGeamoj9MCGECT/gli1bZPPmzd3y0aNHffNjjTEKqbaFY531rq0zT7X6O0vW4jr9n60uJSdLUadPXlu3zu/PpKcq1U7V15r+5H2r++8+p5d90M+scdtpUaf/s9SpWl+hHv1tcZdvaqFN9W/sLIznnGxqp59+ujQaDfNWdvjwYfP2JiIyMDAgAwMDs9U9QgghJylz4tLf398va9askd27d0e/3717t6xbt24uukQIISQD5sz8uHnzZvnABz4ga9euld/7vd+Tu+++W5577jm5/vrrp3ZD9VprXqvrmBCdsjH9pa710PdKmkArrks+o0Z/pnPtdMyPNa4NemJrmOzSNmanPzjlUR+C29b1K1b3Mb0zz/T6V8OE6JRTfahlAvX6CxRTnKdpWeFnyfxYZ9npD5SWRCp+TvUB2qLSE7xKbFvDdKmb1hqTKTJnm9p73vMe+a//+i+59dZb5Ve/+pWcf/758s1vflPOOuusueoSIYSQk5w5dRTZuHGjbNy4cS67QAghJCMY+5EQQkg2zOmb2oxRQ/sKZQ2dLHXf0hEpHJ3PnGJwnlNMw9X2RIgo5utMqWsdTQ2M9cHTajytqeO3Da6+FReLjtNf/Ytaml/c1tPNUppa0amu8z5LLa1uOm2ROYl91COS2pf+kvvXui7yTtvU37oiauvf19P1grnx7E4c39QIIYRkAzc1Qggh2cBNjRBCSDbkqakhaPPVtmVjOwb7r65HmzSUI83K1EFZ39c512GuxbbGLu5odd59Z4iQ0Iu0RoVtjf6m6k1bc2PVtgNV2KeOvm+orBsrV/wMzxzrk5qLhFY3ZbwzbdC/wimb/mFb777T0fXqaJRTPf82Q9Q5T2bPzk69raep4bX670zAPwjwty/6u4haMrSN7ivAHGv3fFMjhBCSDdzUCCGEZEM25kf3ldyYDfXPvklRty0asd2lQBOjbmvMjXCt6mMJ9ymdtua+jumyTLSdbF1dPJMj1nW0mTDRNkTmx7htp1NCubptgLbBM1WCWS609SRDh9EcKfqzwVzoZ6Y8oB1znmmrTYptaAufpXDbOn1ImDXdtl5/e2iqjK/r4dr2bPq9MimiWdD8PXPuY0yKqmmirTS8IzPxL3SpwPvUCRc3A/BNjRBCSDZwUyOEEJIN3NQIIYRkQzaaWkSNEFVGQ2uA9qHKqKGhFqZ1s0YD23agPF6P2lfDaGpB1cF9Hd3M1EkM1k+2Duk4GhrWGUnFcdPHa9ud6rZt1NRUfQe0pE4n7kW7rfUtuI9ZO+NzE9qOviICwoOfymPS1Ah9ZTQ01M3aum31fcx9E/pb3Afor9HYQnXbXrn/I3U0HicnT0/d9Gu53k/884TlRnWdO4YNqHNCX5nPNsfhzPimRgghJBu4qRFCCMkGbmqEEEKyIR9NLQolhXVQLit+llhDExEpVdnoYnBuraHKqLc1jaam9Ddo29eIRYuGo5Oh/qbrSzwbVVTrcXU0tBSRnuWcNRMR6Uh1W08na0PbVjsWAbT+hmfYRkFTK0t13zaMWRs1tvGykYC8FDc4vF5KIzd/CLSsoWd5Wljp6G1YTt+3Widz9bjUZ3PG05xFq5PSpgZ+iKpq3dQ9a4Zt4e9BAH0r1tQKv23HqYOyOWZZ0T9TToTqin8x84Ib39QIIYRkAzc1Qggh2ZCP+VERUrGE1Ot9KvSVNhOiubHZBPOjatsEE2IfmipV276yum6sfvxexowJn62p7DtY55XRVDkdPJOiVx4Fewi2HVVmxFYnbotj2FJt0YxZgklxVJku0YI0KtUEtCHBHEf1GH5Lhz6r4d/veJiP1esM1QnXe21yNG1HvbZooq1+TroPNVz63ZBaGIas+j7TYoqhr1KZpKOl0gCTIoxh7KYPpkpcZw39XRQX3UVjioQ+6C8K9mGuPfz5pkYIISQbuKkRQgjJBm5qhBBCsiEfTc1xMbUu/ZMPfaV1NE9DExHpbyrtCzU11MlUfR/4U/fDtVons3WosSmtztShpqaOFfTQ77kdufRXu+WLiLRUPbYdhfKI0r5QfxsBl/6G0tzQ3d8ebVD3QRENviG62ob1ittGWoMXJishqdVKueK59Dvu9Z6GNlYfquuccllDfzNt3ZQ2NdrOVOqZRIqryN0+4dKvdTTULI3rvQ4Xh276mJJJ/aKETngu/CbDDvbfOYrhhSybDX2Nb2qEEEKygZsaIYSQbOCmRgghJBvy0dQ0joYmEtuLMRV5gWfGlKbmaWhj5XFhAjW0gUYsWmhNrb+M61A30/Wok+F99XmzJogfDanW2Ez4LT9oTkRbqnUzE/pKMGTVuCjQgYkbbsfLs78cv3akE9c1C9DYVL3RHeG+Xogw1Ni0hoEpbYqA2p26DlMcmZw2k8Q5lzbWB68tlCPtC+pGQXdU44C6WGn0uFDd1tHYUCcroQ+xpiZQ55xTQ/2thrBjzqIpncyeU4PzZZGmGjftNKvTAnkamkg8TiatUvWRXOnAgjAam/N3ETXAKCoh9CH0UMOcCnxTI4QQkg3c1AghhGRDPuZHz5rjufSj2c1krFbmPHSnd9z2FzRbUR2aFBc0xuv7wfazsBFfq13+0VTZB/YdXcajAtjWC43VMPadatomBtA4aFJsgW1Fh7vCOvys2qTY6sSf5VjRF5WbnfH+H4c6nHMZHa/vwDyhOUebU3GtBM/2Y3ykdYeqq8ZurJqmMjxPMUo/upF7bvuNlu+mXzru/yVeqyP6O9H+sY/WpR8nSqqpYx7z5s2Y6ND8qF3v/SzkQa0lvA8sX+k47vS4HtpqcZVoAoXGhWpg5gI/qxOyDMuzbY3kmxohhJBs4KZGCCEkG7ipEUIIyYZ8NDUPjFCkjL7owo/ZrXWqF0wf47ntexoallFDGwAtSZexbkEJ+pvW1FBDA5EF6zXTcenXoE6GobBaZbWmdrwTiwnDqr/DBbrlo9s+CBEOwcvUDVpIRwkaHdQ+sFw47t+9wtEzaoXJSoS+8l36q93/jYZmtDv1XcT7tKHDjqZmxgGv1XXTcenXdY14LaP8FmljuI7g2qBc/CGrEp5IEumrziSNGrbuAp4iMZHbyol/Fplg7ejQV3PrwW/gmxohhJBs4KZGCCEkG7ipEUIIyYY8NbXEwYnIdgx2ZZN6pqwOk9WH59RU2dPQRER+qznS/RnPYy0qR6Ky1tFQQxuooan1FxhSqzr1zHQ0tSj1DNSNhHjJaR0NNTV7Bq+vss6E+aohnGgdDdPdtEFU0euhLH1NJdIl3DVZQ3BLpZ6pEyZLnxFLnGnT2penoYmINEbGb2bu04ofFJ09G62uGyur+6Kmhm2DI/rUEIEKM6laJ4VBA90sPqcWr5XSnHEcry9Qf+uDdRb1H99LcNIn7o/IRLqZXg8oEDqPSa3JWYZvaoQQQrKBmxohhJBsyMf86GQStllclSkFzY1oxlL1Jns1ZqxWdphU6CvdFs2NixpQVvVoblxQoPlR9cEJoSUSh8Iqwdw4nTBZ2uSIdWhiHInMj/Fy9EKANYr+SfdvIZpzMMO2motRMCm2SzyCUJ3ZANdSWx8dQWtOjczXrklxOi79UZisuM6Lpp8MfaXbgrmxRBOjqrfmR8cc2fFNleKZH9F06YGxpdREomnShMJSayfAcSA0R+oQa6HPf9fQ3y8ce5spYPxnXJ/GHKm+msm144Rum2tzJN/UCCGEZAM3NUIIIdnATY0QQkg25KOpeaBLv/oZw2J5bvsm8zVmqFblVOgrrZN5GtpYebj7M7r0o6am6/vAhb9PqjW1BmbFraGpoUal010YTU0g9YzS0TAsViPA3NQ4ZhD3zw9RpN34R0M8Ri2IWaTXw2gb3LRhfRT6s9aJzVQHR7/w0tKIYNbp6joRcOlPhb5SOpmnoWFbMZpa3IlIc8MwWKCxaR3NhtSaeuqZSIcqqjU0ERHR66wJdY5Ghavce/MI4JcPfx4iTc3T0ERgzrGujkv/HMM3NUIIIdnATY0QQkg2cFMjhBCSDXlqauZcGhSd80OFE24Jz6U1MQyV0s2wrZdOxtPQsJzU1FTZnlMDjU2f+0oYxnV92wxoXNT1eC4Nz6KNKJ0PNakSNDU8S+ehtTzswyiU9byNgNCA89hS9bhW3LWUWJOTJXUmKKo3ug30V9Wbc2mu/ladPmasrfp+eRqaiBQtdeOEpiajbVWX0NR0fUpD0/XmUGtMdDYNtFkp8eyZCn0Fa84sZdUHfNPAproPOPYduLhoq3N1mNIGrtXn7HCtYN6awtHUZko+nix8UyOEEJIN3NQIIYRkQzbmx+DEbUEzkUTmx+qwWCJxKKRmwqW/T9lsMPK+l7HahL5yyqeAadIzP5oo/WDI6IvCZCXMj2ocMHI9orPvtuCZI2gSVWYZ48Ifqs2NGP0fMwV40f9tNoDxrwHO6QiYtfR6wLVSZ53p9RrMkRMw9cQXVj3i/+qr68wpDSekljVHqs+CWbIhar92vcfQV2hi1OWiBeH+jUu/KifNj+NtQ8r8qM2pGBYLiMyPJkU1RNNXtkDsA5pwg/5TjEcFTPaHYsKfJyyr52B4Mwzr5a2HOuvMrNFZ9vnnmxohhJBs4KZGCCEkG7ipEUIIyYZsNLU6FFGkm1TqmU5lXRMMzwMN5dIPwoOXsdrTxbCcbquyZBuXfgw7Ve1GjOb2CBgHzPqhn4LP7IOwWcdr2NvbKiRQB8IDtaHcKqs1teFOvOz1vGFdnfWQcvGfFWpkJI6mJqG/6WzX1qXfyWZt6trVZU9DE4lc+mU01t8CamzBcemfRuqZoCcVPxu6+KvjK7gUsAeRFoZfRuOmr1LPQB8CuN5rKd/T0ET89TDX6WTqwDc1Qggh2cBNjRBCSDZwUyOEEJIN80NT88JkYVNHY8OwWJieRZ/1Qk3NK2P4Ki8UlqehjZXbE/489pyoGP2Ppj8hAOm25vQYXDqiNIwOGN8bkP6mDpGmBmeCRszZs/aEP09U1vOGc2rnvPrsmbuWZkpfc0IUOcfmbFvnDBuWMdUMiqpaR8O29tyaCn3laWgikY4WRvFMW7WmZvQ2RJ9xw/QxQKSbgY4bQC92ZWkoa62uwO8inn9r688GZ8JwbpqqPqGbTnXtnGj6Gt/UCCGEZEPPN7Xt27fLhRdeKIsXL5YzzjhD3vnOd8qBAweiNiEEGRoakuXLl8vChQtl/fr1sn///l53hRBCyDyj5+bHPXv2yA033CAXXnihjI6OytatW2XDhg3y9NNPyymnnCIiInfccYfceeedct9998k555wjt912m1x22WVy4MABWbx48fQ7kTD16Ld7dMs25cg0Fdehu3pTxaHB6O6eCSwVTb/fMaWhiXFB1DaqkjivtEifGogGDFpZwx+9E3AMx39uoTu1uW21ORKzAehxaEn1GIkkzI+YbUHPG5qUa6wH6+Iv1fQqSj9Sw6XfD6lVHbXf1jllL3q+gMs/mgnRbV+XsS0cBwi6bFz6HXMkZgYwkfeVabUBYbKAoNaomW6TNVuZFCEcH/ZXh99Kz4VTh+Huprh2kLmO0t/zTe1b3/pWVL733nvljDPOkL1798qb3vQmCSHIjh07ZOvWrXLllVeKiMj9998vg4ODsnPnTrnuuut63SVCCCHzhBnX1F544QURETn11FNFROTgwYNy6NAh2bBhQ7fNwMCAXHrppfLoo49OeI/h4WE5evRo9I8QQghBZnRTCyHI5s2b5ZJLLpHzzz9fREQOHTokIiKDg4NR28HBwW4dsn37dlmyZEn334oVK2ay24QQQk5SZtSl/8Ybb5Sf/OQn8sgjj5g6dFsNIVhX1v9jy5Ytsnnz5m756NGjtTY2T9uo45ad0lAaytnduI2DVtNfVIfU6pNqjc1LHzNW1veJWQAuyFo36xNfH3CBQWup/puM2phORkcdgs/WD21beswcF36ReHxx7LGtnre0Tjb54yBxXWXVzJEKk6W1JicrNtajNmOeE4XJSuhZugx1xhU/0t9AQ0MX/452e598xnSDEwrLpJNxbhMKvM/kxwHHMOhyQguN5w01NNTYog5DWzlpmLFN7SMf+Yg8/PDD8oMf/EDOPPPM7u+XLl0qImNvbMuWLev+/vDhw+bt7WUGBgZkYGBgprpKCCEkE3pufgwhyI033igPPfSQfPe735VVq1ZF9atWrZKlS5fK7t27u78bGRmRPXv2yLp163rdHUIIIfOInr+p3XDDDbJz5075x3/8R1m8eHFXJ1uyZIksXLhQiqKQTZs2ybZt22T16tWyevVq2bZtmyxatEiuuuqqXneHEELIPKLnm9pdd90lIiLr16+Pfn/vvffKBz/4QRERufnmm+XYsWOyceNGOXLkiFx00UWya9eu3pxRmwSe9uFpKrau+kxTCUZoG5pp/NoGpoRxNCAvfczYffV1/tkzraM1sG2Nl/gOBs5SelfL6IXxc9rKro+fxeiFWqtLjFnp6Zs4ZtEcJ86pOesB8dbZTOE90tQ559S88Fs43Sa9jKPVmbKjkxn9NQp9BW09PQ7uE2qknikw9Yx6rAl1halz9LX4WbzzcE1/zPT44tiHDoTUcs6e1VoPwFyfRfPo+aaG4ulEFEUhQ0NDMjQ01OvHE0IImccw9iMhhJBsmB9R+h1SJiLPpNhIuH97NKL7+ibFOEN1tblRJI62j6Gv0G1fmxzR3FjWiuOEqXm16Sd+Jkbt73dCapnxVmVrdkVz5OTnQs+bmVPHVInMhbnRo0hYTXzTFLri1/hs7lGBatOasfJAOTYpOnUisanSPHPyLv7GnKfDWYEFscCQWjpbQQP665kUO35bY8L1UPcycwpu+77pGivn4ozK5OCbGiGEkGzgpkYIISQbuKkRQgjJhnw0taLi55rU0cWQhuemb3Sz6rboVu4+0/msqfQxWkdDDa1R1Pj/jtEoxq9tC4YLqw7VYz6LMxU4Rt54m7FPzM1kmc5aqbVevZQgdZhOd6M+OOGVsN7R0JJ4Op6XPkZARzNHA+oMRLXLfIGR5bBPOjXNVDXJia7V+ps39hPVT7oPU7xuomtnWWrmmxohhJBs4KZGCCEkG7ipEUIIyYZ8NLWMic5npc7VzXRneozXX/ysjVpaCDkp8PQ3JKGjnXB4/Z2O1khcTra/gYQQQkgl3NQIIYRkA82PJwFt5fPdxoy0YKI7yQw0bn/xs7ZP4NA8ZIroIx5lYn51GCqMcn8iUjrvDPhZ5yQ1ep7wTY0QQkg2cFMjhBCSDdzUCCGEZEM+mlqPQgl1ULOqQVuHhwplZV2qbSdgKhfnmU5GiA66CcN94ozV8Mwa6TkwnYzJhK3rHNdl81m8Z+L4OuNtxj4xN5PvwzR0kDrrtUch4KZzbfRRQf8xMq+nk9XRjjyNDfUqzL6trsX0MbWUZwgXh5mw3T5FdTU+N46RM4ZmCSbmZvJ9mOJ1E107y3Ih39QIIYRkAzc1Qggh2cBNjRBCSDbko6lNkZAwOmvdpAPGYTxHVUdjaUf3RY2n+nwW9gHVgRGlWaEpvgVpYCSo1Bgm3c3k/7+DGlpb9QGf2QYBSfcXe2DGW5/XM+OAutnk50LPm5lTfI5z39Ramm2C0a8C1KsCZgRK6Toe+lrUeOA+Wn8rjB4EbRvjcxwgBJWuExEJatkVZXX6mBRGQ1MaGz4TP2tUj3U4vlonS+mQU9QlzZyaOa++jV1LJy58UyOEEJIN3NQIIYRkw7w0P3pmIjQvReZHU4eu+NVmwlaI0+R2PPd/KOtrW2Ck6wOzoXavb4H7fAPMT61C2Wigf5ixug7a5Igu/Ngn3Xs0KbaccUiNmR5fO/beHFfPqW3rm2Tmwhzpm5DgF8Xk6kw9nv5A059ak56ZTURE9LUdSCUNbvqx6S9uGzDjs66DpWwyVtcgMimCCz/2KToOgJnksa1jqrRu+sqkiCZQnBvXxByX3fUAnGCW9gi+qRFCCMkGbmqEEEKygZsaIYSQbJgXmpqXVBZ1D2waXE0NXc4dHQe0mpHQrGzbEiirtiNFLBD0wX0bWgszHt2gx0VHBeJPXtZw4UXdrO3oei24thX0zzBGgpqaGjMzRnFZjy+OPbbV85aaY70evLWCzEli46ROVlTXlRhirdrl3CyVhtZ8oC2Gkio9jQq0Ogwfp9tCOajUNOaZdTJo47X6CILRxap1MuP+X2MccAz1+Np5844KSGWdiL8eTqasT3xTI4QQkg3c1AghhGQDNzVCCCHZkKemltAvtL6R0lD0mSasQw1oVJ2zacGZm1ZZrQGNoKYW4mkZUTpZH7Q97n5YPKADtWog+o0oARqb+jmlSHihr1rQ3ePq8xw344A6mRpfHCPnWqNZwtxE85Y6p+asB6u/STVT1NiS54Occ0leGe+L2ozW2GxdddnoWaiTqZBVBYavgjmOzp7JqHhEqWfwvBtqX1pj89LHCIa+8j9b0VT9bzbdttF5s4T+psc3PRdOnbc+aqwdZK7PsPFNjRBCSDZwUyOEEJINeZofETD11HHL1ial0YSbvjZNGZOXax6Lp+F4py8qlyrKeKNGRmqkDcbAhhdSq4YJATNW1wl9FZsfYRxCX2UZxwjH0DU/OmGzcE7tnKu1U+M4yHSysbs4oY+MSdFra9y9q8uui7nEprTQgPXaBBOdGl8v1BVirOWYZUJ9T4oGLtAak+FFzMes2Gg2jMyPENYLyro+NH2X/thUiXVOJH5jYobyFNfOiebuzzc1Qggh2cBNjRBCSDZwUyOEEJIN80NTA7Tp3tPQRETays0Y60bBKD3cHh/O/jJ2OUYNqE+Fu+qD0Feom5Vhapoa6ln9GCZL6RClER7jYqMY/0Uqq3SsLaZCX2lNrVpDw3Kq7XDH099iPUPPG85pnfVgNLa5Do2VCpNVTrJORDpN5aYPJ0U6oCWVSsMyqVFsevPx+4LWhcMXddFkmYYbqzBZqNUZ9HMTGb6jVDp4NMA5vmA0NEydo8rB1FVrbDj26Lav5y2lm3rr4WQKm8U3NUIIIdnATY0QQkg2cFMjhBCSDdloaoV3fsg5ZIF17Y5zTg3C+Iy0Y9t3v7Kpj3TioR3GlDFFn/oZNDUQHkonMFUbzsrocj/ct1XEOl+fCqPVSBykaihdArU60yf3vF51eKukpuboZMOd6rbDMBc4N1r3wznFOdfrAddKnXWm64qERhnNTAG6E+Z9cUNfwY2dc2odTBmjllKAc1+hCeOgxiyATlbYw3zjP8Kfo8KEddLht+A7gelk1HexSGlquj6VcinS1BLhrHQ9nlNDPU6fTcNzak7ZjD3cVmtsOKd11oMXUsvW+droTMM3NUIIIdnATY0QQkg2ZGN+jDAmDihGZqHqOpHYfd1Ed8co8sqs1erEpr/hIh5qbXJsFP0yWTrw/5AOmB87ygTSgkjmGOG/oVz60fxYYtghr09gq9DmxzZmnXayeqNJ0TM/vtQZiOpe6sRjqE2OaH7EedTzhnOKbduOSbHjmSMTa3KyuJHVsd6YkKoj71tzI5iQ1DAYt3EweRU683UfhpKLiWrR9GeSTmv39IT5sTnefzwqUOushRmzorLOd+lH02S1+bEDY4ZjGLv0J6L0R/MWP9IzRxqztmeOTITUmm34pkYIISQbuKkRQgjJBm5qhBBCsiFPTQ1xUoR0wGW7DeWWcvHuAzs+un83i/HysQLSx4BGVRrf5snRhv+HoEu/dpFHl35zdCAKk9WprEv2yaTgKSvr6mSz9kJfoYb2UhvKqh41tWPt+L56HnFOvfWAdW4qmpkSGuq4WqMuovWWdnWdSKwXwtKWEpYyakJOF6JVZ7zpsbHWrEBDQw0wOiqAGlrPUs8k0r6o/rrpYwTc9FGHBD1Ojy/et9OHeqfSIY27P5R1fQ2X/hMtZBbf1AghhGQDNzVCCCHZwE2NEEJINuSjqYWKn2WCYynKQIxni2yqEX1OLf4/QMM579QEm38JOk6jhqamdSkTdqqMy15Km34Ik6V1NOwPhupy+4c6nx5fQc0PQ1Q1JvxZpF7oK9TY9FwYDc2ZNzyXhnOu1wOuFVxL4pyH9NarocaZoOhoHOoiTtnT0ETis154JExAx9FhqXD+kSIKfYVn5Uoojz+4QD0TNLUizi8VP3Qa59R02Zzlcs6MeeljREBTMzoZXqvr/DODUVuj60HbcuKfJyy7YbIS5RmGb2qEEEKygZsaIYSQbMjH/KjxbDIiohNAG29fNEcqM4fn3i0i0lRu8MfR79lhIZoboL+eiQ7LnvkRjxVgvWY65kevfxhSy/tsNhJ/degrz23/OJgfsaznEecU51yvBxsWS+KyHsLEmpw0dUw9iSj9kXmsrA6LJQKf1Vjv8BfjDypbmFUAsmQrsyGaH8t2vAZDW5kqTeiruFi0q9dvndM03jSZrN5mvHVEfzQToku/E/rKcduHZR9lusZ7JV36o/UQ19VZZ3Pt4s83NUIIIdnATY0QQkg2cFMjhBCSDXlqaoiXesZoJnHjUVUu0cUYjPNlu1lZ54E6E9rbR1239+qUNn2lHyardHzJpxMmS9ORan1QJHahT+mFnuu957aPGhqGwhpu6/uibgpzEWlqoIt4YbNmKv3vdFz6dZgsmG4vshQubZzj6MOC23vZgmtVn0ymazxWoPU3zKgNZZyLuHIaLv0aR5PCsnHhd1PEpEJfqZ8Tma/1nwejqTnlOi79c62hIXxTI4QQkg0zvqlt375diqKQTZs2dX8XQpChoSFZvny5LFy4UNavXy/79++f6a4QQgjJnBnd1B5//HG5++675XWve130+zvuuEPuvPNO+eIXvyiPP/64LF26VC677DJ58cUXZ7I7hBBCMmfGNLXf/OY3cvXVV8s999wjt912W/f3IQTZsWOHbN26Va688koREbn//vtlcHBQdu7cKdddd93UHuiZybFO2eoxXUi7DRqAsm+PghaDWSmidDKjsY6Dz9Fn0UbLOHzVKBiw+1V9XxFP2UADQ1+N96EJmhqePdP9xVQ40zmnpj+bCTsmqFGNjylqM1rrEhFpqXEZAS0RdbJIf3M0NJFYR8M5xrI+r4VrBedY3LNdMrk6ETedDJb1MTA3tYjAeU1zVhL0YlVswzzh9yDqb0KbKZyzZ/C1EGnqtlAH/Y2WM+pv0zmnpnUy87lRN9N1cVOjhUX6G7R1wlthHZ5bi9tiXXV/U2fa9Nc4eQQzlzBZN9xwg1x++eXy+7//+9HvDx48KIcOHZINGzZ0fzcwMCCXXnqpPProoxPea3h4WI4ePRr9I4QQQpAZeVN78MEH5YknnpDHH3/c1B06dEhERAYHB6PfDw4OyrPPPjvh/bZv3y6f/exne99RQgghWdHzTe3555+Xm266SXbt2iULFiyobFfgq3oI5ncvs2XLFtm8eXO3fPToUVmxYkV1Jxxz48vP6v6MrswQxqet3YiheyNoHtGPbMSmPzTDaRPjaAkmOUhDPKIyavfDfdGlX4fC6ktk29Zt62QNSBFF6cfjCiYEWFnZFs2w2sQ4iu7+beeogKmD5+jM16N+mKy2cvE3LvyeW7yJ4C9Tw4RiwjBUykSXCpOlTVPQnxIe1BFtqo7bmo+mGpTYP4zEr/pQmuzb1WNmXfqdtnVc+BNEkflrhCFLtY3CWSXMxm7oK9NW1ZkQWtXXpsJkxUdHMEaZzCk939T27t0rhw8fljVr1nR/12635Qc/+IF88YtflAMHDojI2BvbsmXLum0OHz5s3t5eZmBgQAYGBnrdVUIIIZnRc03tLW95izz11FOyb9++7r+1a9fK1VdfLfv27ZOzzz5bli5dKrt37+5eMzIyInv27JF169b1ujuEEELmET1/U1u8eLGcf/750e9OOeUUOe2007q/37Rpk2zbtk1Wr14tq1evlm3btsmiRYvkqquu6nV3CCGEzCPmJEzWzTffLMeOHZONGzfKkSNH5KKLLpJdu3bJ4sWLp35TL5Ow59KPqWbQRVppKEZCg9HTGpvJjAH6gNad2qCpYQgoHe5qBDNqgxbWVKGwrIZWXfZCZtVFu+ab7NDe0QaTpgZ0SKVh4RiZtEBuyqBqTQ3bjo6CJqiuNalncPF4Lv01Ml/rYTCys3E5V9ehHcasyepnose81tg6sI5McuioD9UamkicesbT0ERiN/7C+JE7bvtTTfMzEc7xCuPS7xxt8DQ248LvhTdLHdtQ9zIamuP+nzqKEdn4Emuyl8M/GWZlU/v+978flYuikKGhIRkaGpqNxxNCCJknMPYjIYSQbOCmRgghJBuyTD2D9nZzTEWHBwJ9BePvdIrqfR81tvjcD2hHqIWV4+UWnPPog7NoLSVEmHBWpRP6SlD7cDS1Hp5T88JkmXBhjv6G+paub+N5tzZqbOq+qJOZdEM69FW1hob3Qg3NrKVOtQBjNKFJgrNkz6KpFgmNSq+c1P9u9UfBFDH4FdFnyFBDK7yzaI6GJoI6mVMH9T1c2m7KlWDExYrrxNfYkjqZo1m6beucaUv2QQ8w1Mncwjc1Qggh2cBNjRBCSDbkY36M/GfRdxnaarMGvjq30Tymb+tkNpbYjNVoxA/tgJmgVG78aPobdTJsN8pqEyK2NXUS45kc65gj0Wzo1Zmp0FnIE+7/bS+7gmOqRNd7NEfqaPs2E3q12z6uFeMHHy0eqKvjcq7nwosEb+4LdTVc+D03fTQhWvOjE00fzZHqu2oj72Pb6jpr3pVq6tjHnKlJRqN33f/hXlHUe6h03OtrZTdPta0Rpd/rgx2H2TVI8k2NEEJINnBTI4QQkg3c1AghhGRDPpqaJhUmSxu4EwmeI+2mAe7+xuY/bogOmBoD3aBVEdNzlOCmH2W7cDQ0kdic7eltiFdXF5MB2qmLNLVE2+DoZJ6+aSRWTBmj+4DpYzy3faOhefk5oG2PUs+4KU3MWZZql3MBncy7r9XQ4NpQXWeWmdbfEmPka2pSyYylnjEPqi4nNbXoi+vUCcxx4qhArbau/oYphKrvO9epZ/imRgghJBu4qRFCCMkGbmqEEEKyIRtNTdvb0YSOqd5DZIBPxHiJ7gtaTImalSqYuurQQm2ji8WHRCK9K5X2Q9V75n9z3xnC09fG6qvbGinEOdNmPomnk2GfHP3N6GS6bLSk6nNruAZrhXGqoc1EaV/MffCLoX/G83jVl3p1+OBe6mRuWyB+7syIPMlIZzXmbcr6m1cnEqcicupE4r9ndVLPGM1vjjU2vqkRQgjJBm5qhBBCsiEb86OLY44MptIxRyZiCcWRq6HOCR1jsxlXm4mSJkPP43iOXW1FJjDvRZWpaz0Xecd0aewjznMdM6G5V8pc5mW+7hVOd9H13jMLoSnd+yy4BK2ZWF2XPF7jtEXmOvz7dEh89zyTYh3zo9fWzLG7HqbRhzmGb2qEEEKygZsaIYSQbOCmRgghJBvy1NSMeFCtF5gMxNNwtTV6jIcSEOq5BtcQFqZj665z7XS0jjrXenqWd986WaaTbuU1Ql+5+uEUJwfmP3ihrxL90V0wvTG6mdKAa42937SY4jxN6zRKj1LPJB9T59op/j3oqVbn1CWPDkRt51b85JsaIYSQbOCmRgghJBvyMT9qk6Kpq35XTr/qK7OLZ+ox1yXuK57tp5pa5sfpMFvmxxoYU7FHLbPmVOv8/kx6qlJHGbyl4jwkGZzeyZDg9b1W0Pta1vJZWkizZH6sQ61PXsus6TxzOibEWn+zJt+2F/BNjRBCSDZwUyOEEJIN3NQIIYRkQz6amqaOHT/Z9sSKAWN0PZI/3rGSaeHocb18DCGzCN/UCCGEZAM3NUIIIdnATY0QQkg25KOp1UlhUXHdxPXVIob7nBk7yzNL8CzP2DNn4SxPrUzBvTwf5PW/R33gGczJke0ZzNRzZgC+qRFCCMkGbmqEEEKyIRvzYxztGyrrmBC9zLx4ca+y+DKS+SSfM/uRzL1E6KZyipHMTU6JWpkiapgQ3ftOPityksL70jj3nccZKNys7t59ZywDhZ8J3c9gH/cpKs2CKZJvaoQQQrKBmxohhJBs4KZGCCEkG7LR1CLQpltH+0I7c6e6zrYdf24trW46bZGTOb5RUvtycrB4elaNtqH0taUiauvf19P1oozVtbSkyWtfqc/i6lnYtnR0MkfnQ9nRe04xjSMS5jlzgK8zpa71MqoX0La6zv0b1fHbxvd17iPx3zr72ZwU67MA39QIIYRkAzc1Qggh2cBNjRBCSDbkqakh5jyGKnSgzikXaJPGtt59p6Pr1bF1T/X82wxR5zxZMlxUjbaepobXFqWug0r4b1+kU6F0AG2j+wrQK5kBP5vun9H8oBe6HvU3KEfDYuqgrO+LddilovqLYI4Belqdd98ZIiQWt9aosK3R31S9aWturNrC3xnTp46+b6isGytX/AzPHOuTmouEVjfb8E2NEEJINnBTI4QQkg35mB8dc56xRGiTYhvawqt04bZ1+pAwa7ptvf720FQZX9c7m4Ex4UUPqi7XMimiWdCY4Zz7GJOiappoKw3P9Tr+hS4VeJ/INCUurinVmA31z75JUbctGvEiLNDEGI0R1sG1qo9lwlSp6819HdNlmWg72bq6eCZHrOtoM2GibYjMj3HbTqeEcnXbAG2DZ6qEv3WhrScZOox/v0R/NpgL/GxTPL0yVfimRgghJBu4qRFCCMkGbmqEEEKyIR9NTVMj9JXR0FA3a+u21fcx903ob3EfoL9GYwvVbXvl/o/UsX07OXl66qZfy/V+4p8nLDeq69wxbECdianljMNUtYUaIaqMhtYA7UOVUUMzWpjSzRoNbNuB8ng9al8No78FVQf3dXQzUycxWD/ZOqTjaGhYZ6Rwx00fr213qtu2UVNT9R34+9XpxL1ot9V9QdhFT3z9xyW0qz/3WAN9Ha57/9KZhm9qhBBCsoGbGiGEkGzgpkYIISQb8tHUnNQNdfQsTwsrHb0Ny+n7Vutkrh6X+myOpmbOonmhuqaBH6Kq2v7unjXDtqC/BNC3Yk2t8Nt2nDoom+M6Ff0zZe/MXUpwi0JJJZ5ZVvwssYYmIlKqstHF4NxaQ5VRb2saTU3pb9C2rxEv7oajk6H+putLPBuF59+c+06HSM9yzpqJiHSkuq2nk7WhbasdL0Ktv+EZtlHQ1Eq19tttGLM2amzjZSPdeylucHjddEMzL7jxTY0QQkg2cFMjhBCSDfmYHxWOh/lYvc5QnXC91yZH03bUa4uv+tXPSfehhku/G1ILw9lU32daTDH0VSqTtK7vNMD0A2MYu+mDqRLDBTW0mUhcdBeNKRL6oF2dsQ+R9dF/ZERIxYDTYacSoa+0mRDNjc0mmB9V2yaYEPvQVKna9pXVdWP14/cyZkz4bE31RcE6r4ymyungmRS98ijYsbHtqDIjtjpxWxzDlmqLZswSTIqjynSJln/48xUR8MsIcxzV4/fJKAzMfE0IIYRMCW5qhBBCsoGbGiGEkGzIRlOrlXLFc+l33Os9DW2sPlTXOeWyhv5m2ropbWq0nanUM4lUKZG7fcKlX+toqFka13sddgjd9DG1R9D6C7plV2My7GD/naMY3nEKMxPO0QDr0j/50FdaR/M0NBGR/qbSvlBTQ51M1ffBF6EfrtU6ma1DjU1pdaYONTV1rKCHLv3tyKW/2i1fRKSl6rHtKJRHlPaF+tsIuPQ3lOaG7v72aIO6D4po8NdfV9uwXnHb6HucCpM1y2Gz+KZGCCEkG7ipEUIIyYYZ2dR++ctfyvvf/3457bTTZNGiRfKGN7xB9u7d260PIcjQ0JAsX75cFi5cKOvXr5f9+/fPRFcIIYTMI3quqR05ckQuvvhiefOb3yz//M//LGeccYb8+7//u/z2b/92t80dd9whd955p9x3331yzjnnyG233SaXXXaZHDhwQBYvXjz9Tjjn0kQSoaQcTc3T0ERESmWURl2sNHpcqG7raGyok5Wj1YKM1dCcc2qov9WQIcxZNGXIt+fU4HxZZJuPm3aa1WmBPA1NJB4nk56j+miXdGBBGI1NS4CJlDZRdCvoQ5iqhuloaCLx8GL/CjwzpjQ1T0MbK48vYNTQBhrx4taaWj8sfNTNdD3qZHhffd6sCV/GhlRrbCb8lh/sLKIt1bqZCX0lGLJqfJF2YOKG2/Gf3v5y/NqRTlzXLEBjU/VGd4T7eiHCUGPT3ynzfQqo3anrMMWRyWkzu/R8U/v85z8vK1askHvvvbf7u1e96lXdn0MIsmPHDtm6datceeWVIiJy//33y+DgoOzcuVOuu+46c8/h4WEZHh7ulo8ePdrrbhNCCMmAnpsfH374YVm7dq28613vkjPOOEMuuOACueeee7r1Bw8elEOHDsmGDRu6vxsYGJBLL71UHn300QnvuX37dlmyZEn334oVK3rdbUIIIRnQ8ze1n//853LXXXfJ5s2b5VOf+pQ89thj8tGPflQGBgbkmmuukUOHDomIyODgYHTd4OCgPPvssxPec8uWLbJ58+Zu+ejRo3Zjc1ykzRv4FKP0oxu557bfaPlu+qXj/l/itZ1qU6Vx249CalXfR0R8f/U65jHj264wJjo0P2rXez8LeVBR5fE+RV/ctuNlNoByW5mGSjSBYoZl1cDMBX5WJ2SZLieH2rPmeC79aHYzGauVOQ/d6R23/QXNVlSHJsUFjfH6fljcCxvxtdrlH02VfTDAuoxHBbCtFxqrYezy1bRN7LZx0KTYAhOdDneFdfhZtUmx1Yk/yzFY3E21uI9DHc65jI7Xd2CezJ8DZU7FtRI8m733/ReZdZf+nm9qnU5H1q5dK9u2bRMRkQsuuED2798vd911l1xzzTXddgVqKyGY373MwMCADAwM9LqrhBBCMqPn5sdly5bJa17zmuh3r371q+W5554TEZGlS5eKiHTf2F7m8OHD5u2NEEIIqUPPN7WLL75YDhw4EP3umWeekbPOOktERFatWiVLly6V3bt3d+tHRkZkz549sm7dul53hxBCyDyi5+bHj33sY7Ju3TrZtm2bvPvd75bHHntM7r77brn77rtFZMzsuGnTJtm2bZusXr1aVq9eLdu2bZNFixbJVVdd1evujOElEq4TJisR+sp36a92/zcamtHulE6C92lDhx1NzYwDXqvrpuPSr+sa8f+b0MIcaWOgqXXg2qBc/CE7B3q2i/RVJ3dBLUR3Ab2RTQSgcuKfRSZYO3V0s6li+qvDZFVnpBaJU71g+hjPbd/T0LCMGtoAaEm6jHULStDftKaGGhoMPtZrpuPSr0GdDENhtcpqTe14J9bChlV/hwt0y0e3fRCQHYKXqRu/b0qr66BmjWWdVmluPfgNPd/ULrzwQvn6178uW7ZskVtvvVVWrVolO3bskKuvvrrb5uabb5Zjx47Jxo0b5ciRI3LRRRfJrl27enNGjRBCyLxlRgIaX3HFFXLFFVdU1hdFIUNDQzI0NDQTjyeEEDJPYexHQggh2ZBN6pmIVOqZOmGy9BmxxJk2rX15GpqISGNk/GbmPq34QdHZs9HqurGyui9qatg2OKJPDRHIHMWI7O0waGDHj8+pQWp6c1ZmvL5APaAPtLuo//h/N5z0ifsjMpFuptcDCoTOY1JrcrIkDmFGmh90z6SeUboZhsnqw3NqquxpaCIiv9Uc6f6M57EWlSNRWetoqKEN1NDU+gsMqVWdemY6mlqUegbqRkL851TraKip2TN4fZV1JsxXDcFb62iY7qYNYpheD2Xpa+HR9yJ5MHh2RTe+qRFCCMkGbmqEEEKyIR/zo2dSnI5LfxQmK67zouknQ1/ptmBuLNHEqOqt+dExR3Z8U6V45kc0XXpgbCllqzCRYzAUljJzBHArR3OkDtUT+vz/j2nTEI69zRQw/jOa6Iw5UlmRkmvHCd3mmiYRJ/O1zb6tTOBobkQzlqo32asxY7UyE6ZCX+m2aG5c1ICyqkdz44ICzY+qD04ILZE4FFYJ5sbphMnS6wrr0MQ4Epkf4z+1XgiwRtE/6f4tRDM8ZthWczEKJsV2iUcQqjMb4Fpq66MjaIVn5mtCCCGkN3BTI4QQkg3c1AghhGRDPpqah6NneGlpRCBMVh2X/lToK6WTeRoathWjqcWdiDQ3DIMFGpvW0WxIramnnol0qKJaQxMREa2bNaHO0ahQFfH+dxbALx+km0hT8zQ0EZhzrJuObjZV0KVf/2w0tGq3fZP5GjNUq3Iq9JXWyTwNbaw8nvwXXfpRU9P1feDC3yfVmloDs5nX0NRQo9JpioymBgtC62gYFqsRQOerccwg7p8fWk678Y+GeIxaEGtOr4fRNnxnYH0U+rPWiak3C/BNjRBCSDZwUyOEEJIN3NQIIYRkQ5aamqttYL3RbUCjUPXmXJqrv1Wnjxlrq/QsT0MTkaKlbpzQ1GS0reoSmpquT2louj6Rvj06mwY2finx7JkKfQXnfIzMoPqA/xvDproPOPYduLhoq3N1mNIGrtXn7HCtYN6awtHUpixDJM4AFc45NaOxqTKeS2tiGCqlm2FbL52Mp6FhOampqbI9pwYamz73lRA0dX3bDGhc1PV4Lg3Poo0onQ81qRI0NTxL56G1POzDKJT1vI3A4sZ5bKl6XCs2Ep7+ewAdnONUNHxTI4QQkg3c1AghhGRDNubH6I03OGYgEdel33j7OiG1rDlSmRQxSzZE7deu9xj6Ck2Muly0INy/celX5aT5cbxtSJkftTkVw2IBkfnRpKiG6N/KFoh9QBNu0MsVjwqYKOLFhD9PWFbPwfBmGNbLWw911pleo0XCPBaceFtoJpIofFF1WCyROBRSM+HS36c+LEbe9zJWm9BXTvkUME165kcTpR/Md31RmKyE+VGNA0auR3TW9BY8cwRNosoUaFz4Q7W5EaP/Y6YAL/q/zQYw/p3BOR2Bvwd6PeBaqbPOglMuZsE2yTc1Qggh2cBNjRBCSDZwUyOEEJIN2WhqtaiRkTjSTRL6m852bV36nWzWpq5dXfY0NJHIpV9GY60joMYWHJf+aaSeCVrgws+GLv7KDRqt7SZ/rn4O/nfMuOmr1DPQhwCu91oS8jQ0EX899Cy79TTQQ49ah00906msa8LiHmgol37QjryM1Z4uhuV0W5Ul27j0Y9ip6uMfOMURMA6YrUk/BZ/ZB2GzjtdYAG0Vyq0DYd3aUG6V1ZracCf+k67nDevqrIeUi/+JBN/UCCGEZAM3NUIIIdnATY0QQkg2zA9NzQlR5By/sG2dM2xYxlQzaJzXOhq2tefWVOgrT0MTiXS0MIpn2qo1NaO3IfpMC6aPASLdDPSAALqDK29AWWt1BRr18fxbW382OJeGc9NU9QnddKprZ+ZSz0AxOhNUXScC59RAo8L0LPqsF2pqXhnDV3mhsDwNbazcnvDnsedExeh/6/0JAUi3Nd8CuHREac8dmNQGpL+pQ6SpwVoeMWfP2hP+PFFZzxvOqZ3z6rNn7lo6wfQ1vqkRQgjJBm5qhBBCsiFL82MyAnoNl34/pFZ11H5b55S96PkCLv9oJkS3fV3GtnAcIOiycel3zJGYGcBE3lem1QaEyQKCjPfXWDFM1mxlUoSwTthfHX4rPRdOHYZNmuLaQXoWpR+r9amHhEt/bJqK69Bdvanih2F0d88Eloqm3++Y0tDEuCBqG1VJnFdapE8NRAMGrazhj94JOIbjP7fwO2NuW22OxGwAehxaUj1GIgnzI2Zb0POGJuUa68G6+Es1jNJPCCGE9AZuaoQQQrKBmxohhJBsyFJTq0UqTJa2mztZsbEetRnznChMVkLP0mWoM674kf4GGhq6+HdquPR7OKGwTDoZ5zahwPtMfhxwDIMuJ7TQeN5QQ0ONLeowtJVZx9M26rhlpzSUhnJ2N27jMG/9RXVIrT6p1ti89DFjZX2fmAVwdETrZn3i67ouMGgt1X+TURvTyehocfDZ+qFtS4+Z48IvEo8vjj221fOW1skmfxwkrqusmhP4pkYIISQbuKkRQgjJBm5qhBBCsmFeamreGSFT55xT88JvYbwdk17G0epM2dHJjB0/Cn0FbT09Du4TaqSeKTD1jHqsCXWFqXP0tfhZvPNwTX/M9Pji2IcOhNRyzp7VWg/AlM+iTQNP+/A0FVtXfaaphEGyoZnGr21gShhHA/LSx4zdV1/nnz3TOloD29b4v3wHv8hK72oZvTB+TlutQfwsRi/UWl1izEpP38Qxi+Y4cU7NWQ+It87mGr6pEUIIyQZuaoQQQrJhXpofNQWa+ky9Knju/iL1skW7RwWqTWvoIo/XxiZFp04kNlWaZ07exd+Y83Q4K7AgFhhSS2craEB/PZNix29rTLge6l5mTsFt3zddY+Xc+jqnTESeSbGRcP/2aET39U2KcYbqanOjSBxtH0Nfodu+NjmiubGsNS+YUl1/v+JnYtT+fieklhlvVbZmVzRHTn4u9LyZOXVMlciJbG5E+KZGCCEkG7ipEUIIyQZuaoQQQrIhH03NSwky1fvUJNbfnPBKWO9oaEk8Hc9LHyOgo5mjAXUGotplvsAIRdgnnZpmqprkRNdq/c0b+4nqJ92HKV6H16buU1T8XJM6uhjS8Nz0jW5W3Rbdyt1nOp81lT5G62iooTWKGv+XN9ry+LVtwXBh1SHWzGdxpgLHyBtvM/aJuZks01krNsbW1G81FfimRgghJBu4qRFCCMkGbmqEEEKyIR9NLWc8/Q1J6GgnHF5/p6M1kpOC6HxW6lzdTHemx3j9xc/a4NruGSfbOiGEEEIq4aZGCCEkG2h+PBnQrsJlwj9Wh6HCKPcnIqXz/yr8rCdail0ybdrK37uNmcTBRHeSGdbd/uJnbc9xSLWc4JsaIYSQbOCmRgghJBu4qRFCCMmGfDS1HoUSms61kZkc9B8jF3g6WR3tyNPYUK/C7NvqWkwfU0vBKDD1TI0+RXU1PjeOkTOGOPapuZl8H6Z4HV6buk+PQsB1pvxBRdo6PFQoK+tSbTsBU7k4z3Qy+XTQBR7uE2eshmfWSKuE6WRMJmxd57jlm8/iPRPH1xlvM/aJuZl8H6bzhzBRnmH4pkYIISQbuKkRQgjJBm5qhBBCsiEfTW2KBKNfBahXBcwskdJ1PPS1qPHAfbT+Vhg9CNo2xv+fEiAEla4TEQnqGFtRVqePSWE0NKWx4TPxs0b1WIfjq3WylA45RV3SzKmZ8+rb2LU0t4SELqJ1kw58UDxHVUdjaUf3RY2n+nwW9gHVqxGlWeH0tyANjASV0siku5n82kYNra36gM9sw98O3V/sgRlvfV7PjAPqZpOfCz1vZk7xOc59U2vpRIJvaoQQQrKBmxohhJBsmJfmR9+EBL8oJldn6tGLGE1/yiTimdlERERf24FU0uCmH5v+4rYBMz7rOrDemIzVNYhMiuDCj32KjgNgRmJs65gqrZu+MimiCRTnxjUxx2V3PQBzYbHxzERoXorMj6YOXfGrzYStEM9Tx3P/h7K+tgVGuj4wG2r3+has5QaY/lqFWtDQP8xYXQdtckQXfuyT7j2aFFvOOKTGTI+vHXtvjqvn1Lb1F++JbI7kmxohhJBs4KZGCCEkG3q+qY2OjsqnP/1pWbVqlSxcuFDOPvtsufXWW6WjPPFCCDI0NCTLly+XhQsXyvr162X//v297gohhJB5Rs81tc9//vPy5S9/We6//34577zz5Ec/+pF86EMfkiVLlshNN90kIiJ33HGH3HnnnXLffffJOeecI7fddptcdtllcuDAAVm8eHGvu+ST1MmK6roSQ/VUu5wbb++G1nygLYaSKj2NCrQ6DEOk20I5qNQ05pl1MmjjtfoIgtHFqnUy4/5fYxxwDPX42nnzjgpIZZ2Ivx7mInuIlzAZdQ8TvcjV1NDl3NFxYNBGQrOybUugrNqOFLHW1Qf3bWgtzCxm0OOiowLxJy9rHL1A3azt6HotuLYV9M8wRoKamhozM0ZxWY8vjj221fOWmmO9Hry1gpxoSbt7vqn9y7/8i/zhH/6hXH755SIi8qpXvUr+7u/+Tn70ox+JyNhb2o4dO2Tr1q1y5ZVXiojI/fffL4ODg7Jz50657rrrzD2Hh4dleHi4Wz569Givu00IISQDem5+vOSSS+Q73/mOPPPMMyIi8uMf/1geeeQRefvb3y4iIgcPHpRDhw7Jhg0butcMDAzIpZdeKo8++uiE99y+fbssWbKk+2/FihW97jYhhJAM6Pmb2ic/+Ul54YUX5Nxzz5VGoyHtdltuv/12ed/73iciIocOHRIRkcHBwei6wcFBefbZZye855YtW2Tz5s3d8tGjR7mxEUIIMfR8U/vqV78qDzzwgOzcuVPOO+882bdvn2zatEmWL18u1157bbedCfcUgj2v9X8MDAzIwMDApPuQPELhpf2ocS4JtRmtsdm66rLRs1AnUyGrCgxfFeIpjM6eyah4RKln8Lwbal9aY/PSxwiGvvI/W9FU/W823bbRebOE/qbHNz0XTp23PmqsHWTKx3wS+oXWN1Iaij7ThHWoAY2q85EtOCvZKqs1oBHU1GC9jiidrA/aHnc/LB6shFo1EP1GfwONTf2cUpK90Fct6O5x9XmOm3FAnUyNL46Rc63RLGFuonlLnVNz1oPV36SaOdbYer6pfeITn5BbbrlF3vve94qIyGtf+1p59tlnZfv27XLttdfK0qVLRWTsjW3ZsmXd6w4fPmze3gghhJA69FxTe+mll6SE/zU3Go2uS/+qVatk6dKlsnv37m79yMiI7NmzR9atW9fr7hBCCJlH9PxN7R3veIfcfvvtsnLlSjnvvPPkySeflDvvvFM+/OEPi8iY2XHTpk2ybds2Wb16taxevVq2bdsmixYtkquuuqrX3RnDCX1kTIpeW+PuXV12XcwlNqWFBhgymmCiUyYGL9QVYqwuGK1cuUEXDbAZdGrYELyI+ZgVG82GkfkRwnpBWdeHJpomq8fXjj32t+JnsXM+1bUzY+7+ME113LK1SWk04aavTVPG5OWax+I/Mcc7fVG5VNkhGjUyUiNtMAY2vJBaNeYCM1bXCX0Vmx9hHEJfZRnHCMfQNT86YbNwTu2cq7VT4zjIXJsbkZ5val/4whfkz/7sz2Tjxo1y+PBhWb58uVx33XXy53/+5902N998sxw7dkw2btwoR44ckYsuukh27do1+2fUCCGEZEXPN7XFixfLjh07ZMeOHZVtiqKQoaEhGRoa6vXjCSGEzGMY+5EQQkg2zMvUM3XcsiMzdEJv6TSVmz54HHdASyqVhmVSo9g0ueP3Ba0LzdlRF02WabixCpOFWp1BPzeR4Ts6moFHA5zjC0ZDw9Q5qhxMXbXGhmOPbvt63lK6qbceTrSwWZ6GJiLSVsdDsG4UBmK4Pf6nor+Mj4qgBtSnFn8ffBFQNyvD1DQ11LP6MUyW0o9LIzzGxUYx/otUVulYW0yFvtKaWrWGhuVU2+GOp7/F3ws9bzinddaD0dhOMB1Nwzc1Qggh2cBNjRBCSDZwUyOEEJIN2WhqkYm3AN0Jw2+5oa/gxs45tQ6mjIkyyEMfmmCTVvbrADpZYQ+FjP8IU1aYsE46/BZoFJhORulbRcpIrutTqTsiTS0RzkrX4zk11OP02TQ8p+aUzdjDbbXGhnNaZz14IbVsnZ5Tn8I7P+QcjsO6dsc5pwbh10ba8SD1q3kb6cRrcBhTxhR96mfQ1EAwLp3AVG0446jL/XDfVhHrfH0qjFYjMcINtbZRqzN9cs/rVYe3Smpqjk423KluOwxzgXOjdT+cU5xzvR5wrdRZZ7jYi4RO2Wv4pkYIISQbuKkRQgjJhmzMjxo3sjrWGxNSdeR9a24EE6N6uzdu42DyKnTm6z4MSRQT1aLpzySd1u7pCfNjc7z/eFSgls+uGbOiss536UfTZLX5sQNjhmMYu/QnovRH8xY/0jNHGrO2Z45MhNSaNMY0DcXILFRdJxK7r5vo7hhFXpm1Wp3Y9DdcxH9GtMmxUfTLZOnAAHbA/NhRa6cFGSgwwn9DufSj+bHEcHFen2BBaPNjG7NOO1m90aTomR9f6sQZSV7qxGOoTY5ofsR51POGc4pt266ZW6DshMmaY3d/vqkRQgjJBm5qhBBCsoGbGiGEkGzIUlMz1HG1Rl1E6y3t6joRkY5ygy1ik7mUYGdGTcjpQqSxGW96bKw1K9DQUAOMjgqg0bxnqWcSaV9Uf930MQJu+qhDgh6nxxfv2+lDvVNpCcbdH8q6voZL/8ylnqlOEdIBl+02lFvKxbsP9Fd0/24W4+VjsLhRoyrNmZTJ0YYBRZd+7SKPLv3m6EAUJqtTWZfsk0nBU1bW1clm7YW+Qg3tpTaUVT1qasfa8X31POKceusB63AtRTM8yy77KfimRgghJBu4qRFCCMkGbmqEEEKyIR9NrcaZoOiIBeoiTtnT0ETis154JExAx9FhqfB8DlJEoa/wrFwJ5fEHF2gHb2M4rihPSfzQaZxT02Vzlss5M+aljxEBTc3oZHitrvPPDEZtja4HbcuJf56w7IbJqvh5IkLFzzLBNKkH4fq0qUb0ObW48w3nvFMTFncJOk6jhqamdSkTdqqMy15Km34Ik6V1NOwPhupy+4c6nx5fQc0PQ1Q1JvxZpF7oK9TY9FwYDc2ZNzyXhnOu1wOuFVxL4pyHnOtza3xTI4QQkg3c1AghhGRDPuZHTZ2MxIko/ZF5DPzyXXOkeeXGX4w/qGxhVgHIkq3Mhmh+LNuxKSW0lanShL6Ki0W72gxTxyvb8+g1Wb3NeOuI/mgmRJd+J/SV47YP1pwo0zXeK+nSH62HuK7OOpuyi38iIrpOAG1OaaA5UpmfPPduEZGmcoM/judVHBbivEB/PRMdlj3zIx4rwHrNdMyPXv8wpJb32Wwk/urQV57b/nEwP2JZzyPOqee2j2vFqBN6CBNrcrbhmxohhJBs4KZGCCEkG7ipEUIIyYY8NTVkOi79OkwWmOK9yFKoSXWMiFKdSbpswbWqTybTNR4r0PobZtSGcug4/6eZjku/xtGksGxc+N0UManQV+rnROZrLVkYTc0p13Hpn7kwWVDUrtZGM4kbj6pyiUdDYAGX7WZlnQfqTKiTjrpu79UpbfpKP0xW6fiRTydMlga/00YT7ExeL/Rc7z23fdTQMBTWcFvfF3VTmItIUwM9G8te6pk5hm9qhBBCsoGbGiGEkGzgpkYIISQb8tHUnJBEWNbHwNzUIgLnfsyZG9AdVLEN9nbMziI1dL3COXtWxtGBRJq6LdRBfyNpBPW36ZxT0zqZ+dyom+m6uKnRwiL9Ddo64a2wDs+txW2xrrq/qTNt+r+M7pqsEyYrVac01oBhsdqwJtV4joIWg+s1SiczGus4+Bx9Fm0UFugoDFK/qu8r4okZaGDoq/E+NEFTw7Nnur+YCmc659T0ZzNhxwQ1qvExRf1Na10iIi01LiOwQFEni/Q3R0MTiXU0nGMs67NpuFZwjsU9kwswTBYhhBAyNbipEUIIyYZ8zI8aE4oJw1ApE10qTJY2TcFrdAkP6og2ecRtTZBr1aDE/mEkftWH0mTfxhur64xLv9O2jgt/gigyf40wZKm2UTirhNnYDX1l2qo6E0Kr+tpUmKz46AjGKJOp4ZgbRSTKYG6OoED4tbY+/gH9GUGztn5kI16EaIbTJsbREl3442tH1OLuh/uiS78OhdWXyLat29bJGpAiitKPxxVMCLCysi2aYbWJcRTd/dvOUQFTB8/Rma9H/TBZbeXib1z4veNMzt+VuYBvaoQQQrKBmxohhJBs4KZGCCEkG7LR1LQ520RtMi7n6jrc1jHsEGgqGnQM1hpbB+z4Jjl01IdqDU0kTj3jaWgisRt/YfzIHbf9XqaLcI5XGJd+52iDp7EZF34vvFnq2Ia6l9HQHPf/1FGM6L+M3pGOOi79qazC2qUfU83gGlQaipHQ4HNrjc1kNIK50LpTGzQ1DAGlw12NYEZt+A41VSgsq6FVl72QWXXRrvkmO7R3tMGkqQEdUmlYOEYmLZCbMqhaU8O2o6OgCaprTeoZXDyeSz8zXxNCCCG9gZsaIYSQbOCmRgghJBuy0dQ0aMK1Z9FUi4RGpa38qf8BaDMzpoiBI0LRGTLU0DATfaRZOBqaCOpkTh3U9/AojxsCKhhxseI68TW2pE7maJZu2zpn2pJ90AMMdTI1UCc1xwt1WLe2WXRxU1yUCtTY4vOaoB2hFlaOl1twPq8PzqK11OI34axKJ/QVjKBJleOEyZoOXpgsEy7M0d9Q39L1bTzv1kaNTd0XdTKTbkiHvqrW0PBeqKGZtdSp/uIaLX+W4ZsaIYSQbOCmRgghJBvyMT9qE4MXCV7Ed5Gu4cLvuemjCdGaH51o+miOVDYmG3kf21bXWTOBVFPHYuNYG6xLf3U51TYyE+LgO+71tbKbp9rWiNLv9SH6bCnzWHTuAf3poa1eHzh+bTSP6ds6mY0lNmM1GvFDO2DeLZUbP5r+Rp0M242y2oSIbU2dxHgmxzrmSDQbenVmKnQW8oT7f9vLruCYKtH1Hs2ROtq+zYRe7baPa8X88YsWD9Ql/u7MNHxTI4QQkg3c1AghhGQDNzVCCCHZkI+mpqmhzVif6GqXcwGdzLuv1dDg2lBdZ0z+Wn9L2K99TU0qmbHUM+ZB1eWkpqbLqF95c5xMf1Ojrau/YQqh6vv2LPWMp18kEjxH2k0D3P3Nuhr/4AFTGuHxFVXEtEoluOlHWYocDU0kHjJPb0O8urqYDNBOXaSpJdqGSH+L26JO1ulUtzUpY/R9MX2M57ZvNDTnyzjHYbEQvqkRQgjJBm5qhBBCsoGbGiGEkGzIR1Oroc1EaV/MfVBM0D/juY7qS706fHAvdTK3LRA/d2bOkiSPqNSYtynrb16dSJyKyKkTiXWzOqlnjObn9A+J1pUJk4ZnpXSDRGyu6L6gxZSoWamCqasOCdc2ulh8uC/Su1LpmlS9J9ua+84Qnr42Vl/d1kjYzpk280k8nQz75OhvRifTZeMDUH1uDddgMjzfDMM3NUIIIdnATY0QQkg25GN+9HDejtH13jNroUnGRsyvdr235gZ1XY3MsclX+Tl2p50WCZOSa7KrY97zvJNxjt31MI0+9ApnDQZT6XwREjHg4owDUGfGyDETOub9pMnQOykyu5GYJsQ9FZOKhOa6yDumS2PXdp6bMBPWcdMvvMzXcwzf1AghhGQDNzVCCCHZwE2NEEJINuSpqYFtPnihrxK2Y21mNmZ7o5spLaGO9lXH9b5GGodpudL2KPVM8jF1rlUfqM5RgZ5qdU5d8uhA1HaKk2NuWq3zmgzE0zgiYfQYjynOU6gzJtPR0OpcO1vfIU/P8u5b5wuUPA5UI/SVqx/OrcDJNzVCCCHZwE2NEEJINnBTI4QQkg3ZaGqu9uXY6pMZV5z0EZ4EUCuTSy0pYZYOhcySplaHWp+8llbnPHM6utgk+5CUILROVuPitJ6lNGBPdzbXJe4r3pexmlqa2nSYLU2tBkb/9OjV35Zp6GK1pophsgghhJCpUXtT+8EPfiDveMc7ZPny5VIUhfzDP/xDVB9CkKGhIVm+fLksXLhQ1q9fL/v374/aDA8Py0c+8hE5/fTT5ZRTTpE/+IM/kF/84hfT+iCEEEJIbfPj//7v/8rrX/96+dCHPiR/9Ed/ZOrvuOMOufPOO+W+++6Tc845R2677Ta57LLL5MCBA7J48WIREdm0aZN84xvfkAcffFBOO+00+fjHPy5XXHGF7N27VxqNhrnnpPDck6eFY7rs5WMImQx1TNXJtidAbCmFMYESMgVqb2pve9vb5G1ve9uEdSEE2bFjh2zdulWuvPJKERG5//77ZXBwUHbu3CnXXXedvPDCC/KVr3xF/uZv/kZ+//d/X0REHnjgAVmxYoV8+9vflre+9a3mvsPDwzI8PNwtHz16tG63CSGEzAN6qqkdPHhQDh06JBs2bOj+bmBgQC699FJ59NFHRURk79690mq1ojbLly+X888/v9sG2b59uyxZsqT7b8WKFb3sNiGEkEzoqffjoUOHRERkcHAw+v3g4KA8++yz3Tb9/f3yO7/zO6bNy9cjW7Zskc2bN3fLL7zwgqxcuVI6x4/3svuEEEJmiZf/fodaruJpZsSlHzPhhhDM7xCvzcDAgAwMDHTLL5sffzF02zR7SgghZC558cUXZcmSJT27X083taVLl4rI2NvYsmXLur8/fPhw9+1t6dKlMjIyIkeOHIne1g4fPizr1q2b1HOWL18uzz//vIQQZOXKlfL888/LK17xih5+knw4evSorFixgmOUgOOUhmOUhmOU5uUxeu6556QoClm+fHlP79/TTW3VqlWydOlS2b17t1xwwQUiIjIyMiJ79uyRz3/+8yIismbNGunr65Pdu3fLu9/9bhER+dWvfiU//elP5Y477pjUc8qylDPPPLP7xvaKV7yCCygBx2hycJzScIzScIzSLFmyZEbGqPam9pvf/EZ+9rOfdcsHDx6Uffv2yamnniorV66UTZs2ybZt22T16tWyevVq2bZtmyxatEiuuuoqERn7IH/8x38sH//4x+W0006TU089Vf70T/9UXvva13a9IQkhhJCpUHtT+9GPfiRvfvObu+WXHTiuvfZaue++++Tmm2+WY8eOycaNG+XIkSNy0UUXya5du7pn1ERE/uIv/kKazaa8+93vlmPHjslb3vIWue+++6Z+Ro0QQgiRKWxq69evd71ViqKQoaEhGRoaqmyzYMEC+cIXviBf+MIX6j4+YmBgQD7zmc9ETiQkhmM0OThOaThGaThGaWZ6jIrQa39KQgghZI5gQGNCCCHZwE2NEEJINnBTI4QQkg3c1AghhGQDNzVCCCHZcFJval/60pdk1apVsmDBAlmzZo388Ic/nOsuzQnbt2+XCy+8UBYvXixnnHGGvPOd75QDBw5EbSaTvHU+sX37dimKQjZt2tT9HcdojF/+8pfy/ve/X0477TRZtGiRvOENb5C9e/d26+f7OI2OjsqnP/1pWbVqlSxcuFDOPvtsufXWW6XT6XTbzLcxOqGSR4eTlAcffDD09fWFe+65Jzz99NPhpptuCqecckp49tln57prs85b3/rWcO+994af/vSnYd++feHyyy8PK1euDL/5zW+6bT73uc+FxYsXh6997WvhqaeeCu95z3vCsmXLwtGjR+ew53PDY489Fl71qleF173udeGmm27q/p5jFMJ///d/h7POOit88IMfDP/6r/8aDh48GL797W+Hn/3sZ902832cbrvttnDaaaeFf/qnfwoHDx4Mf//3fx9+67d+K+zYsaPbZr6N0Te/+c2wdevW8LWvfS2ISPj6178e1U9mPK6//vrwyle+MuzevTs88cQT4c1vfnN4/etfH0ZHR2v15aTd1H73d383XH/99dHvzj333HDLLbfMUY9OHA4fPhxEJOzZsyeEEEKn0wlLly4Nn/vc57ptjh8/HpYsWRK+/OUvz1U354QXX3wxrF69OuzevTtceuml3U2NYzTGJz/5yXDJJZdU1nOcQrj88svDhz/84eh3V155ZXj/+98fQuAY4aY2mfH4n//5n9DX1xcefPDBbptf/vKXoSzL8K1vfavW809K8+PIyIjs3bs3SjQqIrJhw4bKRKPziRdeeEFERE499VQRmVzy1vnCDTfcIJdffrmJM8oxGuPhhx+WtWvXyrve9S4544wz5IILLpB77rmnW89xErnkkkvkO9/5jjzzzDMiIvLjH/9YHnnkEXn7298uIhwjZKaSR1cxI/nUZppf//rX0m63J0xGWpVodL4QQpDNmzfLJZdcIueff76ITC5563zgwQcflCeeeEIef/xxU8cxGuPnP/+53HXXXbJ582b51Kc+JY899ph89KMflYGBAbnmmms4TiLyyU9+Ul544QU599xzpdFoSLvdlttvv13e9773iQjXEjJTyaOrOCk3tZeZSjLS3LnxxhvlJz/5iTzyyCOmbj6P1/PPPy833XST7Nq1SxYsWFDZbj6PkYhIp9ORtWvXyrZt20RE5IILLpD9+/fLXXfdJddcc0233Xwep69+9avywAMPyM6dO+W8886Tffv2yaZNm2T58uVy7bXXdtvN5zGaiF4nj67ipDQ/nn766dJoNMwOrpORzkc+8pGPyMMPPyzf+9735Mwzz+z+Xidv1cyn8dq7d68cPnxY1qxZI81mU5rNpuzZs0f+8i//UprNZncc5vMYiYgsW7ZMXvOa10S/e/WrXy3PPfeciHAtiYh84hOfkFtuuUXe+973ymtf+1r5wAc+IB/72Mdk+/btIsIxQiYzHjp5dFWbyXJSbmr9/f2yZs0a2b17d/T73bt3Tzp7dk6EEOTGG2+Uhx56SL773e/KqlWronqdvPVlXk7eOl/G6y1veYs89dRTsm/fvu6/tWvXytVXXy379u2Ts88+e96PkYjIxRdfbI6DPPPMM3LWWWeJCNeSiMhLL70kZRn/6Ww0Gl2Xfo5RzGTGQyePfpmXk0fXHrMpubecALzs0v+Vr3wlPP3002HTpk3hlFNOCf/xH/8x112bdf7kT/4kLFmyJHz/+98Pv/rVr7r/XnrppW6bz33uc2HJkiXhoYceCk899VR43/vel7WL8WTQ3o8hcIxCGDvu0Gw2w+233x7+7d/+Lfzt3/5tWLRoUXjggQe6beb7OF177bXhla98Zdel/6GHHgqnn356uPnmm7tt5tsYvfjii+HJJ58MTz75ZBCRcOedd4Ynn3yye8RqMuNx/fXXhzPPPDN8+9vfDk888UT4f//v/80vl/4QQvirv/qrcNZZZ4X+/v7wxje+sevCPt8QkQn/3Xvvvd02nU4nfOYznwlLly4NAwMD4U1velN46qmn5q7TJwC4qXGMxvjGN74Rzj///DAwMBDOPffccPfdd0f1832cjh49Gm666aawcuXKsGDBgnD22WeHrVu3huHh4W6b+TZG3/ve9yb8G3TttdeGECY3HseOHQs33nhjOPXUU8PChQvDFVdcEZ577rnafWE+NUIIIdlwUmpqhBBCyERwUyOEEJIN3NQIIYRkAzc1Qggh2cBNjRBCSDZwUyOEEJIN3NQIIYRkAzc1Qggh2cBNjRBCSDZwUyOEEJIN3NQIIYRkw/8HgFbvtYQtEDgAAAAASUVORK5CYII=\n",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.imshow(sol.reshape(n_points, n_points)[:,:].detach().numpy())"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "6ad15072",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": 111,
   "id": "552b993f",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "tensor([[-1.0000, -1.0000],\n",
       "        [-1.0000, -0.5000],\n",
       "        [-1.0000,  0.0000],\n",
       "        [-1.0000,  0.5000],\n",
       "        [-1.0000,  1.0000],\n",
       "        [-0.5000, -1.0000],\n",
       "        [-0.5000, -0.5000],\n",
       "        [-0.5000,  0.0000],\n",
       "        [-0.5000,  0.5000],\n",
       "        [-0.5000,  1.0000],\n",
       "        [ 0.0000, -1.0000],\n",
       "        [ 0.0000, -0.5000],\n",
       "        [ 0.0000,  0.0000],\n",
       "        [ 0.0000,  0.5000],\n",
       "        [ 0.0000,  1.0000],\n",
       "        [ 0.5000, -1.0000],\n",
       "        [ 0.5000, -0.5000],\n",
       "        [ 0.5000,  0.0000],\n",
       "        [ 0.5000,  0.5000],\n",
       "        [ 0.5000,  1.0000],\n",
       "        [ 1.0000, -1.0000],\n",
       "        [ 1.0000, -0.5000],\n",
       "        [ 1.0000,  0.0000],\n",
       "        [ 1.0000,  0.5000],\n",
       "        [ 1.0000,  1.0000]])"
      ]
     },
     "execution_count": 111,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "x_mesh = torch.linspace(-1,1,steps=n_points)\n",
    "y_mesh = torch.linspace(-1,1,steps=n_points)\n",
    "X, Y = torch.meshgrid(x_mesh, y_mesh, indexing=\"ij\")\n",
    "x_i = torch.stack([X.reshape(-1,), Y.reshape(-1,)]).permute(1,0)\n",
    "x_i"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 86,
   "id": "488e4f0e",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[<matplotlib.lines.Line2D at 0x7fa5b87f8cd0>]"
      ]
     },
     "execution_count": 86,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.plot(sol_D1[:,0].detach().numpy())\n",
    "plt.plot(sol_D2[:,0].detach().numpy())"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 87,
   "id": "dd0cbe4b",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "tensor([[1.0000, 0.0000, 0.0000],\n",
       "        [1.0000, 0.0000, 0.0000],\n",
       "        [1.0000, 0.0000, 0.0000],\n",
       "        [1.0000, 0.0000, 0.0000],\n",
       "        [1.0000, 0.0000, 0.0000],\n",
       "        [1.0000, 0.0000, 0.0000],\n",
       "        [1.0000, 0.0000, 0.0000],\n",
       "        [1.0000, 0.0000, 0.0000],\n",
       "        [1.0000, 0.0000, 0.0000],\n",
       "        [1.0000, 0.0000, 0.0000],\n",
       "        [1.0000, 0.0000, 0.0000]], grad_fn=<AddBackward0>)"
      ]
     },
     "execution_count": 87,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "sol_D1**2/torch.pi**2 + sol_D2**2/torch.pi**4"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 38,
   "id": "d74e12d3",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[<matplotlib.lines.Line2D at 0x7fa5dcfd8d60>]"
      ]
     },
     "execution_count": 38,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAiIAAAGdCAYAAAAvwBgXAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjYuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8o6BhiAAAACXBIWXMAAA9hAAAPYQGoP6dpAABH6UlEQVR4nO3dd3zTdeIG8Cc73ZPudLGhjFJA9lBBEQduVBAUByoewv3OfY47Fe/01DsHigMcLD1QUTgUBZElhQ4os9BBN21pm3QmTfL9/ZG2iiC0kOST8bxfr7xe2n4hj18hefrJZ8gkSZJAREREJIBcdAAiIiLyXiwiREREJAyLCBEREQnDIkJERETCsIgQERGRMCwiREREJAyLCBEREQnDIkJERETCKEUHOBer1YqysjIEBARAJpOJjkNERESdIEkS6uvrERMTA7n83GMeLl1EysrKoNPpRMcgIiKiC1BcXIy4uLhzXuPSRSQgIACA7T8kMDBQcBoiIiLqDIPBAJ1O1/E+fi4uXUTaP44JDAxkESEiInIznZlWwcmqREREJAyLCBEREQnDIkJERETCsIgQERGRMCwiREREJAyLCBEREQnDIkJERETCsIgQERGRMCwiREREJAyLCBEREQnDIkJERETCsIgQERGRMC596B0ReQaT2YqjFfWorG9BbVMr6ppMqG0ywWS2IthXjWBfFYJ91AjxU6FnRAC6BWhERyYiJ2ERISK7q200YWfeKWQV1SKzqBYHygwwma2d/vVxIT4YEh+C1PhgDEsMRf+YwE6d4klE7odFhIjswmi2YMuRSqzNLMWWo5VotUinfT/YVwVdiC+CfVUI8VUjxFcFtVKOuqbWjlGSU40mFJ5qREltM0pqm7FuXxkAIDncDzcMicW01FjEhfiK+M8jIgeRSZIknf8yMQwGA4KCgqDX6xEYGCg6DhGdRXFNE5b8nI91+8qgb27t+HrvyAAMTwpFanwwhsSHICHMt1OjGoaWVuwv1neMpvySX4PmVkvH9y9JCsWdIxMxJSUKcjlHSYhcUVfev1lEiOiClNY1463Nx/HF3mKYrbaXkahALa5LjcENqXHoHRVgl+dpMJqx8UAF1maWYFf+KbS/YvWJCsCCSb0wuV8kP7YhcjEuU0QWL16MxYsXo7CwEADQv39/PPPMM5gyZUqnfj2LCJHrqTS04K0tx7EqvRgmi23ex9ie4bhvXDJGdQ+HwoGjFGV1zVi1pxhLtxeg3mgGAKTEBuLPk3pjQu9uLCRELsJlisg333wDhUKBHj16AAA+/vhjvPLKK8jKykL//v3P++tZRIhchyRJWLWnGC+tP9xRAkYmh2Hh5F4Ylhjq1Cx1TSa8vy0fS3cUoslk+9jmiv6R+Pt1KYgI1Do1CxGdyWWKyNmEhobilVdewZw5c857LYsIkWsoOtWEx9fux868UwCAgXFBeHxKH4zqHi4016kGI97dmoelOwphtkoI1Crx16v74aa0OI6OEAnUlfdvp62asVgs+OKLL9DY2IiRI0ee9Rqj0Qij0djx7waDwVnxiOgsrFYJy3YW4pXvjqK51QKtSo7/m9wbd41OcuhHMJ0V5q/BU1P74frUODy6Zh8OlBrwl//uxzf7y7HohgGIDfYRHZGIzsPhIyI5OTkYOXIkWlpa4O/vjxUrVuCqq64667XPPfccnn/++TO+zhERIucztLRi4ep9+OHwSQC21Sr/uHEgEsP9BCc7O7PFive3FeD1H3LbNkpT4c3bUjG2ZzfR0Yi8jkt9NGMymVBUVIS6ujqsWbMGH3zwAbZu3Yp+/fqdce3ZRkR0Oh2LCJGTHTtZj/s/zUB+dSPUSjn+OrUv7rgkwS2Wy+ZVNWDB6mzsL9FDLgP+ckUfzB2fzI9qiJzIpYrI711++eXo3r073nvvvfNeyzkiRM63Iacc//fFPjSZLIgJ0uLdmWkYGBcsOlaXtLRa8MzXB/D53hIAwFUDovDPmwbBX8M9HImcoSvv304/9E6SpNNGPYjINUiShH99fxQPLs9Ek8mCkclh+ObhMW5XQgBAq1LgHzcOxAvTUqBSyLAhpwLXv70DJbVNoqMR0e849MeDJ598ElOmTIFOp0N9fT1WrVqFn376CRs3bnTk0xJRF1msEp7+6gBWphcBAO4dm4THruwDpcJ9D+iWyWSYMSIBfaMD8cBnGThW2YCbFu/Cp3OGo2ekfTZbI6KL59BXmZMnT2LmzJno3bs3LrvsMuzevRsbN27EpEmTHPm0RNQFJrMVf1qZhZXpRZDLgEU3DMBTU/u5dQn5rbSEEKybNwY9I/xRYWjBLe/twr7iOtGxiKgNt3gn8mJNJjPmfpaJn3OroFLI8O/pqbhqQLToWA5R22jC7KXp2Feih59agfdnDRW+DwqRp3LpOSJE5BoMLa2Y+WE6fs6tgo9KgQ9nDfPYEgIAIX5qLL93BEZ1D0OjyYLZS/dg06GTomMReT0WESIv1GQy4+6le5BxohaBWiU+u+cSjOvl+ftt+GuU+Gj2MEzuFwmT2YoHl2fg59wq0bGIvBqLCJGXMZotuP/TDOxtKyEr7xuBtIQQ0bGcRqtS4J07hmDqgGi0WiTc9+le7C2sER2LyGuxiBB5EbPFivkrs7HtWDV81QosvWs4+scEiY7ldEqFHK/fOhgTendDS6sVdy3dgwOletGxiLwSiwiRl7BaJTy2JgcbD1ZArZBjycyhXjUS8ntqpRyL70jD8MRQ1BvNuPOjdByvbBAdi8jrsIgQeYkX1h/GmswSKOQyvHV7Ksb05IoRH7UCH84eigGxQahpNGHGB7tRWtcsOhaRV2ERIfICn+wqxEc7CgAAr948EJP7RwlO5DoCtCp8fPfwjn1G7vl4LxqNZtGxiLwGiwiRh9t2rArPf3MIAPDolb1xfWqc4ESuJ9RPjaV3DUO4vxqHyw14ZHU2rFaX3WKJyKOwiBB5sOOVDXhweSYsVgk3DInFA+O7i47ksuJCfLHkzqFQK+XYdOgk/vHdEdGRiLwCiwiRh6ptNGHOx3tQ32LGsMQQLLphAGQymehYLm1IfAheuWkgAOC9rfn4Ym+x4EREno9FhMgDmcxWzP0sAydONUEX6oN3Z6RBo1SIjuUWrhsciz9d2gMA8OSXOdidf0pwIiLPxiJC5IFe2nAYuwtqEKBR4sNZwxDmrxEdya08cnkvXDUgCq0WCQ+tyMRJQ4voSEQei0WEyMOs31+OZTsLAQBvTB+MXjzyvsvkchn+dfNg9I0ORHWDCQ+vyILZYhUdi8gjsYgQeZD8qgY8tmY/AOCBCd1xWd9IwYncl4/athW8v0aJ9MIavPp9ruhIRB6JRYTIQ7S0WvDg8kw0GM24JCkUf57US3Qkt5cU7od/tk1efXdrHn48zNN6ieyNRYTIQzzz9QEcqahHuL8ab96WCqWCf73t4aoB0Zg9KhEAsPDzfSiuaRIbiMjD8JWKyAN8sbcYn+8tgVwG/Gd6KiICtaIjeZQnr+qLwbpg6Jtb8dCKTBjNFtGRiDwGiwiRmyuobsQzXx8EACy4vBdG9eAZMvamVsrx9h1DEOyrwv4SPV7jfBEiu2ERIXJjZosVC1Zno7nVgpHJYXhoYg/RkTxWbLAP/nmjbb7Ikm35+IX7ixDZBYsIkRt7e0sesovrEKBV4l+3DIJczp1THWly/yjcOlQHSQL+/Pk+GFpaRUcicnssIkRual9xHf6z+RgA4IVpKYgJ9hGcyDv89Zp+iA/1RWldM55bd1B0HCK3xyJC5IaaTGYsWJ0Ni1XC1QOjce2gGNGRvIa/RonXbhkEuQxYm1mKDTnloiMRuTUWESI3tGjDEeRXNyIqUIsXpqXwMDsnG5oYigcm2E4yfvLLHG4BT3QRWESI3MzW3Cp8+ssJAMArNw9EsK9acCLvNP+yXkiJDURdUyse/e9+SJIkOhKRW2IRIXIjDUYznlybAwCYNTIBY3t2E5zIe6mVcrxx62ColXJsza3C2sxS0ZGI3BKLCJEbefW7oyita0ZciA8evbKP6Dher0dEAOZf1hMA8Pf1h1DdYBSciMj9sIgQuYmMEzX4eFchAOCl6wfAT6MUG4gAAPeNS0a/aNtHNFxFQ9R1LCJEbsBotuCxNTmQJOCmtDiM68WPZFyFSiHHP28aCIVchm/3l2PTIR6MR9QVLCJEbuDtzcdxvLIB4f4aPD21r+g49DspsUG4Z2wSAODpr3K40RlRF7CIELm4w+UGvPNTHgDgb9f15yoZF7Xg8l5IDPPFSYMRizYcER2HyG2wiBC5MItVwuNrc2C2SpjcLxJTUqJER6I/oFUp8HLbWTQr04uwm2fREHUKiwiRC1u1pwj7iusQoFHi79y4zOWNSA7DbcPjAQB//foAWi1WwYmIXB+LCJGLOtVgxD83HgUALJzcC5GBWsGJqDMeu7I3Qv3UyD3ZgGU7CkXHIXJ5LCJELuqfG49C39yKvtGBmDkiQXQc6qRgXzUeb9vj5Y0fclGh5/bvROfCIkLkgjJO1GL13mIAwAvT+kOp4F9Vd3JTWhyGxAej0WTBC+sPiY5D5NL46kbkYswWK/761QEAwM1pcUhLCBWciLpKLpfh79NSIJcB3+4vx47j1aIjEbksFhEiF7N8dxEOlRsQqFXi8Sncxt1d9Y8Jwp0jEwHYJq6azJy4SnQ2LCJELqSq3ohXv7dNUP3LlX0Q5q8RnIguxoJJvRDur0F+VSM+2J4vOg6RS2IRIXIhr353FPUtZgyIDcLtbctAyX0F+ajw5FW2Ua23Nh/HSQMnrhL9HosIkYs4UKrH5xm2CarPXdsfCjn3DPEE16fGYkh8MJpMFrzy3VHRcYhcDosIkQuQJAl///YQJAm4dlAM0hJCREciO5HJZPjr1f0AAP/NKEFOiV5wIiLXwiJC5AK+O1iB3QU10CjleIwTVD1OanwIrk+NBQD87duDkCRJcCIi1+HQIrJo0SIMGzYMAQEBiIiIwLRp03D0KIcmiX7LaLbgxQ2HAQD3j0tGbLCP4ETkCI9e2RtalRx7CmuxIadCdBwil+HQIrJ161Y89NBD+OWXX7Bp0yaYzWZMnjwZjY2NjnxaIreydEchimuaERmowf3ju4uOQw4SHeSD+8fZ/v8u+t9htLRaBCcicg1KR/7mGzduPO3fly5dioiICGRkZGDcuHGOfGoit1BVb8Rbm48DAB69og/8NA79K0mC3T8+Gav3FKOkthkf7SjAgxN6iI5EJJxT54jo9bZJWqGh3CmSCABe25SLBqMZA+OCOuYQkOfyVSvx2JTeAIC3Nx9HZT2X8xI5rYhIkoSFCxdizJgxSElJOes1RqMRBoPhtAeRpzp2sh6r9xQBAP56dT/IuVzXK1w3KBaDdLZzaN744ZjoOETCOa2IzJs3D/v378fKlSv/8JpFixYhKCio46HT6ZwVj8jp/rHxKKwScGX/KAxL5Ciht5DLZXjqqr4AgNV7ipFX1SA4EZFYTikiDz/8MNatW4ctW7YgLi7uD6974oknoNfrOx7FxcXOiEfkdHsKa/DD4ZNQyGX4y5W9RcchJxueFIrL+0bAYpXwykauJCTv5tAiIkkS5s2bh7Vr12Lz5s1ISko65/UajQaBgYGnPYg8jSRJWNS2XPfWYTp07+YvOBGJ8Jcr+kAuAzYerEBmUa3oOETCOLSIPPTQQ/jss8+wYsUKBAQEoKKiAhUVFWhubnbk0xK5tO8OnkRmUR18VAo8cllP0XFIkN5RAbhxiG2E+OUNR7jJGXkthxaRxYsXQ6/XY8KECYiOju54rF692pFPS+SyzBYr/vndEQDAnDFJiAjUCk5EIi2Y1AsapRzphTXYfKRSdBwiIRz+0czZHrNnz3bk0xK5rC8ySpBf1YgQXxXuH58sOg4JFhPsg9mjEwEA/9h4BBYrR0XI+/CsGSInaTKZ8fqmXADAw5f2RIBWJTgRuYIHx/dAkI8KuScbsCazRHQcIqdjESFykqU7ClFZb0RciA/uGBEvOg65iCBfFR6aaNv6/fVNudz6nbwOiwiRE+ibW/He1jwAwMJJvaBRKgQnIldy58hERAVqUa5vwcr0ItFxiJyKRYTICT7cXgBDixk9Ivxx3WBu5U6n06oUePgy27kzb2/JQ5PJLDgRkfOwiBA5WE2jCR9tLwBgGw1RcCt3Ooub03TQhfqgusGIT3adEB2HyGlYRIgc7L2f89BgNKN/TCCu7B8lOg65KLVSjkcu6wUAeHdrHupbWgUnInIOFhEiB6o0tODjnYUAgD9P7sWD7eicpqXGons3P9Q1teLDtlE0Ik/HIkLkQO/8lIeWVitS44MxsXeE6Djk4hRyGRZMso2KfLitALWNJsGJiByPRYTIQUrrmrFit20FxP9N7g2ZjKMhdH5XpUSjT1QA6o1mLNmWLzoOkcOxiBA5yFubj8FksWJEcihGdQ8THYfchFwuw58n205kXrajEFX1RsGJiByLRYTIAYprmvDFXtsumRwNoa66vG8EBumC0dxq6dh/hshTsYgQOcDbW47DbJUwtmc4hiaGio5DbkYmk2HB5baTmT/bfYKjIuTRWESI7Ky4pgn/zbCNhjzS9mZC1FXje3XDIF0wWlqteJ9zRciDsYgQ2dk7P+XBbJUwpkc40hI4GkIXRiaT4ZHLbEX2010nUN3AURHyTCwiRHZUWteM/2YUAwDmczSELtKE3t0wMC4Iza0WjoqQx2IRIbKjd7YcR6tFwqjuYRjGuSF0kWQyGeb/ZlSkhvuKkAdiESGyk7K6Zny+t2005DKOhpB9XNonAgNig9Bk4qgIeSYWESI7WfxTHlotEkYkh+KSZO4bQvYhk8nwp7Zi+8nOQo6KkMdhESGyg3J9M1bvaR8N6SU4DXmay/tGoH9MIBpNFnzAURHyMCwiRHbw3tZ8mCxWDE8KxUjuokp29tu5Ih/vLIS+iSfzkudgESG6SFX1RqxMt50p86dLOTeEHGNSv0j0iQpAo8mCZW0nOhN5AhYRoov00Y4CGM1WDNIFY3QPjoaQY8hkMjw4sQcAYOnOAjQazYITEdkHiwjRRdA3teLTXScAAPMm9uCZMuRQUwdEIyncD3VNrR0nOxO5OxYRoovw8a5CNBjN6BMVgMv6RIiOQx5OIZfhgfHdAQBLtuWjpdUiOBHRxWMRIbpAjUYzPtpRAAB4cGIPyOUcDSHHm5Yai5ggLarqjfii7UwjInfGIkJ0gVbsLkJdUysSw3wxdUC06DjkJdRKOe4blwwAePenPLRarIITEV0cFhGiC9Dym7M/HpjQHQqOhpATTR8ej3B/NUrrmrEuu0x0HKKLwiJCdAH+m1GCynojYoK0uD41TnQc8jJalQJzxthGRd756TisVklwIqILxyJC1EVmixXv/ZwHALhvXDLUSv41IuebMSIegVol8qoasfFgheg4RBeMr6BEXbQ+pxzFNc0I81Pj1mHxouOQlwrQqjB7VCIA4N2teZAkjoqQe2IRIeoCSZLw7lbb3JDZoxLho1YITkTebNaoRGhVcuwv0WNX3inRcYguCIsIURdsza3C4XIDfNUKzByZIDoOebkwfw1uGaoDACzemic4DdGFYREh6oLFP9le7G8fHo9gX7XgNETAvWOToZDLsO1YNQ6U6kXHIeoyFhGiTsoqqsXughqoFDLMGZskOg4RAEAX6ourB9r2sXnv53zBaYi6jkWEqJPebRv6vm5wLKKDfASnIfrV/eNs276v31+GolNNgtMQdQ2LCFEn5FU14PtDJwEAc8cnC05DdLp+MYEY36sbrBKwZBvnipB7YREh6oQlW/MhScDlfSPRIyJAdByiM8xtOwzvi70lqG4wCk5D1HksIkTnUaFvwdos2+FiD0zgaAi5phHJoRikC4bRbMWyHYWi4xB1GosI0Xks3VGAVouE4YmhSEsIFR2H6KxkMhkeaBsV+WRXIRqNZsGJiDqHRYToHOpbWrFidxEAdJx4SuSqJveLRHK4HwwtZny+t1h0HKJOYREhOofVe4pRbzSjezc/XNonQnQconOSy39dWv7h9gKYLVbBiYjOj0WE6A+0Wqz4aHsBANumUXK5THAiovO7cUgcQv3UKKltxv8O8DA8cn0sIkR/YENOOcr0LQj312BaaqzoOESdolUpcGfb8QNLfs7nYXjk8hxaRH7++Wdcc801iImJgUwmw1dffeXIpyOyG0mS8F7H4XYJ0Kp4uB25jztHJkKjlCOnVI/dBTWi4xCdk0OLSGNjIwYNGoS33nrLkU9DZHc7807hULkBPioF7riEh9uRewn1U+PmoXEAbKMiRK5M6cjffMqUKZgyZYojn4LIIdpfvG8ZGocQPx5uR+5nzphkLN9dhM1HKnHsZD16RnIjPnJNLjVHxGg0wmAwnPYgcrajFfXYmlsFuQy4ewwPtyP3lBTuh8n9IgEAH2wrEJyG6I+5VBFZtGgRgoKCOh46nU50JPJC7aMhV6ZEISHMT3AaogvXvvfNl1mlqDS0CE5DdHYuVUSeeOIJ6PX6jkdxMTfkIec6aWjBun2lAGxLdoncWVpCKNISQmCyWPHxrkLRcYjOyqWKiEajQWBg4GkPImf6ZFchWi0ShiWGIDU+RHQcoot2b9sGZ8t3F6HZZBGchuhMLlVEiERqMpmxvG079zljOBpCnmFSvyjoQn1Q19SKNZklouMQncGhRaShoQHZ2dnIzs4GABQUFCA7OxtFRUWOfFqiC7ImsxR1Ta2ID/XFpLZJfkTuTiGX4e7RtlGRj7YXwGrlBmfkWhxaRPbu3YvU1FSkpqYCABYuXIjU1FQ888wzjnxaoi6zWqWO7dzvHp0IBbdzJw9y81AdArRK5Fc3YsvRStFxiE7j0CIyYcIESJJ0xmPZsmWOfFqiLttytBIF1Y0I0Cpx81Cu1iLP4q9R4rbh8QBsh+ERuRLOESHCr/ss3D48Hn4ah+7zRyTErFG2kb6deadwsEwvOg5RBxYR8noHSvXYlX8KCrkMs0Ylio5D5BCxwT64akA0AI6KkGthESGv1z43ZOqAaMQE+whOQ+Q4c9p2Cv5mXxlOcoMzchEsIuTVKvQtWLevDABwz1hu506ebbAuGMMSQ9BqkfAJNzgjF8EiQl7t018KYbZKGJ4YioFxwaLjEDlc+x453OCMXAWLCHmtZpOlYwOzu8ckig1D5CST+kV2bHC2NosbnJF4LCLktb7Msm1gpgv1waR+UaLjEDmFQi7D7FHc4IxcB4sIeSVJkvDRDtsk1dmjkriBGXmVW4bGwV+jRF5VI7YdrxYdh7wciwh5pW3HqnG8sgH+GiVuGRonOg6RUwVoVbilbeO+j7iUlwRjESGv1D4acvPQOARoVYLTEDnf7FGJkMmArblVOF5ZLzoOeTEWEfI6xysb8NPRKshkthdjIm8UH+aLSX1thzsu3VEoNgx5NRYR8jrLdtpGQy7vG4mEMD/BaYjEubttg7M1mSWoazIJTkPeikWEvEpdkwlrMkoBoONodCJvdUlSKPpFB6Kl1YqV6cWi45CXYhEhr7JqTzGaWy3oGx2IEcmhouMQCSWTyTpGRT7ZVYhWi1VwIvJGLCLkNVotVnyysxAAcPfoRMhkXLJLdM2gaIT7q1Gub8H/DlSIjkNeiEWEvMZ3BytQpm9BmJ8a1wyKER2HyCVolArMGJEAAFi2g0t5yflYRMhrLGtbGXDHJfHQqhRiwxC5kNsviYdKIUNmUR32FdeJjkNehkWEvEJOiR57T9RCpZB1/PRHRDYRAVpcM9A2SriUoyLkZCwi5BXaX1ynDohGRKBWcBoi13NX2yqy9TnlqDS0CE5D3oRFhDxeZX0LvtlfBuDXF1siOt2AuCAMTQhBq0XCZ22nUhM5A4sIebzlvxSh1SIhNT4Yg3TBouMQuazZoxMBACt2n4DRbBEbhrwGiwh5NKPZguVtP91xNITo3K7oH4XoIC2qG0z4Zl+56DjkJVhEyKOt31+O6gYjogK1mJISJToOkUtTKeSYOdI2mXvpjgJIkiQ4EXkDFhHyWJIkdRzmNXNkAlQK/nEnOp/bhsVDq5LjYJkBe0/Uio5DXoCvzOSxMk7UIqdUD7VSjtuGx4uOQ+QWQvzUuD41FgCX8pJzsIiQx1ratp37tMExCPVTiw1D5EZmj7LNp/ru4EmU1jULTkOejkWEPFK5vhkb287NaH9RJaLO6R0VgFHdw2CxSvjslxOi45CHYxEhj7T8lyJYrJLtmPOYQNFxiNzO7FGJAIBV6UVoaeVSXnIcFhHyOC2tFqxIty3ZbX8xJaKuuaxvJOJCfFDb1Ip12WWi45AHYxEhj/PNvjLUNJoQE6TFpH6RouMQuSWFXIY725fy7izkUl5yGBYR8iiSJGFZ2yTVmSMToeSSXaILduvQePioFDhcbkB6QY3oOOSh+CpNHiXjRC0OlhmgUcoxfZhOdBwitxbkq8L1Q2xLedsLPpG9sYiQR2lfsnt9aixCuGSX6KK1z7P67mAFl/KSQ7CIkMf47ZLdWZykSmQXvSIDMLpHGKwS8OkuLuUl+2MRIY/x2S8nOpbs9o3mkl0ie5k1MhEAsGoPl/KS/bGIkEdoabVgZXoxAOCutqPMicg+2pfy1jW14qusUtFxyMOwiJBHaF+yGxvsg8v7cskukT0p5LKOUZFlXMpLdsYiQm7vt0t2Z4xI4JJdIge4ZagOPioFjlTUcykv2RVfscntcckukeNxKS85CosIub1lHafscskukSO1fzzz/SGeykv2wyJCbq1C34L/cckukVP0jgrAyGSeykv2xSJCbm35btuS3eE8ZZfIKWa3rUrjqbxkL04pIu+88w6SkpKg1WqRlpaGbdu2OeNpycO1tFqwYjdP2SVypsv7RiI2mKfykv04vIisXr0ajzzyCJ566ilkZWVh7NixmDJlCoqKihz91OTh1u8vx6lGE6KDtJjMU3aJnOK3p/JyKS/Zg8OLyGuvvYY5c+bgnnvuQd++ffHGG29Ap9Nh8eLFjn5q8mBcskskzq3DdNCq5DhUbsDeE7Wi45Cbc+irt8lkQkZGBiZPnnza1ydPnoydO3eecb3RaITBYDjtQXQ2mUV1yCnVQ62U47bh8aLjEHmVYF81pg1uW8q7o1BsGHJ7Di0i1dXVsFgsiIw8fdg8MjISFRUVZ1y/aNEiBAUFdTx0Ou4JQWf3cdtoyLWDYhDKJbtETte+Sm3jwQqU67mUly6cU8azZTLZaf8uSdIZXwOAJ554Anq9vuNRXFzsjHjkZk4aWrAhpxwAJ6kSidI3OhCXJIVyKS9dNIcWkfDwcCgUijNGPyorK88YJQEAjUaDwMDA0x5Ev7d8dxHMVgnDEkOQEhskOg6R12o/YHJlejGX8tIFc2gRUavVSEtLw6ZNm077+qZNmzBq1ChHPjV5KKPZghW7bT99cQMzIrEu7xuJmCAtahpN+GYfl/LShXH4RzMLFy7EBx98gI8++giHDx/GggULUFRUhLlz5zr6qckDbcgpR3WDCVGBWlzRP0p0HCKvplTIMYNLeekiKR39BLfeeitOnTqFv/3tbygvL0dKSgo2bNiAhIQERz81eaD2GfozRsRDxSW7RMJNHxaPf/9wDAfLDMg4UYuhiaGiI5Gbccor+YMPPojCwkIYjUZkZGRg3Lhxznha8jBZRbXYV6KHWiHHdC7ZJXIJoX5qXDc4BgBP5aULwx8pyW20v8hdMygG4f4asWGIqEP7fK3/HahAhb5FbBhyOywi5BYq67lkl8hV9Y8JwvBE21Le5bu5lJe6hkWE3MKK3UVotUgYEh+MAXFcskvkatpHRVbsLoLRzKW81HksIuTyTGYrlrefsjs6SXAaIjqbyf0jER2kxalGE77ZVy46DrkRFhFyeRtyylFVb0REgAZXcskukUtSKeSYMcK2GvJjLuWlLmARIZf321N21Ur+kSVyVdOH6aBWypFTqkdmUZ3oOOQm+KpOLi2rqBbZxXVQK3jKLpGrC/PX4LpBXMpLXcMiQi6t/ZTdqwdFo1sAl+wSubqOpbw55VzKS53CIkIuq9LQgvVtS3bvGsVJqkTuICXWtpTXzKW81EksIuSylrct2U1LCOGSXSI3MrvtVN4Vu4t4Ki+dF4sIuSSj2fLrkl1uYEbkVib3+3Up77f7uZSXzo1FhFyS7ZRdIyIDNbgyhUt2idyJUiHHzI5TeQu4lJfOiUWEXNKynbbPlmeOSOApu0RuaPqweGiUchwoNSCzqFZ0HHJhfIUnl5NVVIt9xXVQK7lkl8hdhfqpMW1wLABg6Y5CsWHIpbGIkMtpf9G6ZmAMwnjKLpHb+u2pvOX6ZrFhyGWxiJBLqdD/esruXW0z74nIPfWLCcQlSbZTeT/dxaW8dHYsIuRSlu8+AbNVwrDEEKTEcskukbtr/4FiZTqX8tLZsYiQy2hptWBF25Ldu3jKLpFHmNQvCrHBPqhtasXX2aWi45ALYhEhl7FuXxlONZoQG+yDyf0iRcchIjtQyGWYNcq2lHfpDp7KS2diESGXIEkSlrVNUp05MgFKLtkl8hi3Do2Hj0qBIxX1+CW/RnQccjF8tSeXkF5Qg0PlBmhVckwfphMdh4jsKMhXhRuGtC/lLRCchlwNiwi5hPYlu9enxiHYVy02DBHZXfuk1U2HT6K4pklsGHIpLCIkXHFNE74/VAGAS3aJPFWPiACM7RkOSQI+3lkoOg65EBYREu6zX07AKgGje4ShV2SA6DhE5CDtP2is3luMRqNZbBhyGSwiJFSTyYyV6W1LdkdxyS6RJ5vQKwJJ4X6obzFjTWaJ6DjkIlhESKg1maUwtJiREOaLiX0iRMchIgeSy2WY1X4q745CWK1cykssIiSQ1Sp1zKC/a1QiFHKZ4ERE5Gg3DdUhQKNEfnUjtuZWiY5DLoBFhITZeqwK+VWNCNAocdNQLtkl8gb+GiVubVui/xGX8hJYREigj7bbXoRuHaaDv0YpOA0ROcusUYmQy4Btx6qRe7JedBwSjEWEhMg9WY9tx6ohl/16VDgReQddqC8m94sCwA3OiEWEBGnfwGxyvyjoQn3FhiEip7t7jG2V3NrMUtQ0mgSnIZFYRMjpahpNWNu2dK/9xYiIvMuwxBCkxAbCaLZ2LOEn78QiQk63Mr0IRrMVKbGBGJYYIjoOEQkgk8lw92jbDyKf7CqEyWwVnIhEYREhpzKZrfhkVyEA4O7RSZDJuGSXyFtNHRiNbgEanDQY8b8D5aLjkCAsIuRU/ztQjpMGI7oFaDB1YLToOEQkkEapwMwRtg3OPtxeAEniBmfeiEWEnEaSJHzYtmR35ogEaJQKwYmISLQ7LomHWinH/hI9Mk7Uio5DArCIkNPsKazF/hI9NEo57rgkXnQcInIBYf4a3JAaCwD4YBuX8nojFhFymg+25QMAbhgShzB/jeA0ROQq2lfPfXeoAidONQpOQ87GIkJOUVjdiE2HTwIA5oxJFBuGiFxKr8gAjO/VDZL06x5D5D1YRMgplu4ogCQBE3t3Q4+IANFxiMjF3DPWNiry+d5i6JtbBachZ2IRIYfTN7XiiwzbBmZzxiQLTkNErmhMj3D0jgxAk8mCVdzgzKuwiJDDrdxThCaTBX2iAjC6R5joOETkgmQyGea0zRVZtrMQrRZucOYtWETIoVotVixr+8x3zhhuYEZEf+zawTEI91ejXN+CDTnc4MxbOLSIvPjiixg1ahR8fX0RHBzsyKciF7UhpxwVhhaE+2tw7eAY0XGIyIVpVQrMHJEIgBuceROHFhGTyYSbb74ZDzzwgCOfhlyUJEkd+wLMGskNzIjo/GaM+HWDs/SCGtFxyAkcWkSef/55LFiwAAMGDHDk05CL2l1Qg5zStg3M2rZxJiI6lzB/DW4c0rbB2XZucOYNXGqOiNFohMFgOO1B7uv9n20bmN2UFodQP7XgNETkLtonrf5w+CTyqhoEpyFHc6kismjRIgQFBXU8dDqd6Eh0gY6drMePRyohkwH3jOWSXSLqvB4RAbi8bwQkCR3nU5Hn6nIRee655yCTyc752Lt37wWFeeKJJ6DX6zsexcXFF/T7kHjtc0Mm94tEUrif4DRE5G7ubfsBZk1GCaobjILTkCMpu/oL5s2bh+nTp5/zmsTExAsKo9FooNHwDBJ3V1nfgi+zSgEA943jaAgRdd3wpFAMigvCvhI9Ptl1Agsn9RIdiRyky0UkPDwc4eHhjshCHuKTnSdgslgxJD4YaQmhouMQkRuSyWS4b1x3PLQiE5/uKsQD47vDR82Vd57IoXNEioqKkJ2djaKiIlgsFmRnZyM7OxsNDZx85KkajWZ8+ssJAMB947oLTkNE7uyK/pHQhfqgtqkV/80sER2HHMShReSZZ55Bamoqnn32WTQ0NCA1NRWpqakXPIeEXN8XbQdWJYb5YlK/SNFxiMiNKRVyzBltW0Hz4bZ8WKzc4MwTObSILFu2DJIknfGYMGGCI5+WBDFbrPhwh22S6pyxyVDIuZ07EV2cW4bpEOSjQuGpJmw6dFJ0HHIAl1q+S+5t48EKFNc0I8RXhZuGxImOQ0QewFetxMy2DRGX/JwnOA05AosI2YUkSXhvq20Ds5kjEzmpjIjs5s5RCVAr5MgsqsOeQm777mlYRMguduadQk6pHlqVHLNGcjt3IrKfiAAtbkyzbfv+7k8cFfE0LCJkF+9utb043DpUhzB/7gVDRPZ137jukMmAH49U4mhFveg4ZEcsInTRDpTqse1YNRRyGbdzJyKHSAr3w5SUKADAe5wr4lFYROiiLW4bDbl6YDR0ob6C0xCRp5o73rY30brsMpTWNQtOQ/bCIkIX5cSpRvwvpxwAcD83MCMiBxoYF4xR3cNgtkr4YFu+6DhkJywidFGW/JwPqwSM79UN/WICRcchIg/XPiqyKr0YtY0mwWnIHlhE6IJV1RvxRYZt2+X2FwciIkca2zMc/WMC0dxqwSe7ToiOQ3bAIkIXbNnOApjMVgzSBWNEMg+3IyLHk8lkuL/tB5+PdxWi2WQRnIguFosIXZD6llZ82vbTyAPju0Mm43buROQcV6VEIT7UFzWNJqzeUyQ6Dl0kFhG6IJ/9UgRDixnJ3fwwmYfbEZETKRVy3DfOtlXAkp/zYTJbBSeii8EiQl3W0mrBh9ttM9YfnNADch5uR0ROdlNaHLoFaFCmb8FXWaWi49BFYBGhLlu9pxjVDSbEBvvgusExouMQkRfSqhS4d2wSANteRharJDgRXSgWEeoSk9mK99o2MJs7PhkqBf8IEZEYd1ySgGBfFQqqG7GhbT8jcj98F6Eu+SqrFGX6FnQL0ODmoTrRcYjIi/lplLhrlG1U5O0txyFJHBVxRywi1GkWq9Sxnfu9Y5OgVSkEJyIibzd7VCL81AocqajHj4crRcehC8AiQp22IaccBdWNCPJR4fZLEkTHISJCkK8KM0baXo/e4qiIW2IRoU6RJAlvbzkOALhrdCL8NUrBiYiIbO4ZkwyNUo7s4jrsyjslOg51EYsIdcqPhytxpKIefmoFZo9KFB2HiKhDtwANpg+zzVl7q+0HJnIfLCJ0XpIk4c3NxwAAM0YkINhXLTgREdHp7hvfHUq5DDvzTiHjRI3oONQFLCJ0Xj/lVmFfiR5alRz3jE0WHYeI6AyxwT64KS0OAPDGD8cEp6GuYBGhc5IkCf9u+0s945IEdAvQCE5ERHR2D03sAaVchm3HqpFZVCs6DnUSiwid08/HqpFdXAeNUo77xnM0hIhcly7UFzcMiQWAjh+gyPWxiNAfso2G5AKw7WAYEaAVnIiI6NzmTewJhVyGrblVyOKoiFtgEaE/tP14NTKLbKMhczkaQkRuID7MF9ento2K/MhREXfAIkJn9du5IbcNj0dEIEdDiMg9zJvYAwq5DD8drUJ2cZ3oOHQeLCJ0VjvzTmHviVqolXI8MKG76DhERJ2WGO7XcTL4fzgq4vJYROgMp42GDNMhkqMhRORmHr60J+QyYPORSuwvqRMdh86BRYTOsDPvFNILa6BWyDGXoyFE5IaSwv0wbbBtrsjrm3IFp6FzYRGh00iShFe/PwoAuP2SeEQH+QhORER0YR6+zLaCZsvRKmSc4AoaV8UiQqfZfKQSWUV10KrkeHAiR0OIyH0lhfvhpiG23Vb/1fYDFrkeFhHqYLVK+Nf3tiHMWaMSuW8IEbm9hy/rAZXCdgbNzuPVouPQWbCIUIeNBytwqNwAf40Sc8dxNISI3F9ciC9uHx4PAPjXplxIkiQ4Ef0eiwgBACxWCa+1TeiaMyYJIX48YZeIPMNDE3tAo5Qj40QtfsqtEh2HfodFhAAAX2eX4nhlA4J8VJgzNkl0HCIiu4kI1GLWqEQAtrkiHBVxLSwihFaLtePY7LnjuyNQqxKciIjIvuaO7w4/tQIHSg347mCF6Dj0GywihC/2lqCopgnh/mrMGpUgOg4Rkd2F+qkxZ4xttPdf3+fCYuWoiKtgEfFyzSYL/v2jbW7IgxN6wFetFJyIiMgx5oxNRpCPCscqG/BlVqnoONSGRcTLfbSjACcNRsSF+OCOEfGi4xAROUyQjwoPtu0W/dr3R9HSahGciAAWEa9W22jCuz/lAQD+b3JvaJQKwYmIiBxr1qhExARpUaZvwSe7CkXHIbCIeLW3thxHvdGMftGBuHZQjOg4REQOp1UpsGBSLwDA21vyoG9qFZyIHFZECgsLMWfOHCQlJcHHxwfdu3fHs88+C5PJ5KinpC4ormnCp7tOAAAen9IHcrlMcCIiIue4YUgcekcGQN/cine2Hhcdx+s5rIgcOXIEVqsV7733Hg4ePIjXX38d7777Lp588klHPSV1weubcmGyWDG6RxjG9gwXHYeIyGkUchkem9IbALB0RyHK6poFJ/JuMsmJO7u88sorWLx4MfLz8zt1vcFgQFBQEPR6PQIDAx2cznscKjNg6pvbIEnAN/PGYEBckOhIREROJUkSbl3yC9ILanBzWhxeuXmQ6EgepSvv306dI6LX6xEaGvqH3zcajTAYDKc9yP7+sfEIJAm4ZlAMSwgReSWZTIbHp/QBAKzJLMHRinrBibyX04pIXl4e3nzzTcydO/cPr1m0aBGCgoI6HjqdzlnxvMa2Y1XYmlsFlUKG/5vcS3QcIiJhhsSH4Mr+UbBKwEsbDouO47W6XESee+45yGSycz727t172q8pKyvDlVdeiZtvvhn33HPPH/7eTzzxBPR6fcejuLi46/9F9IfMFiv+/u0hAMCMEQlICPMTnIiISKzHpvSBSiHD1twqbDlaKTqOV+ryNprz5s3D9OnTz3lNYmJixz+XlZVh4sSJGDlyJJYsWXLOX6fRaKDRaLoaiTpp5Z5i5J5sQLCvCo9cxtEQIqKkcD/MGpmID7YX4MX1hzGmRzhUCu5s4UxdLiLh4eEID+/cKovS0lJMnDgRaWlpWLp0KeRy/s8VRd/citc32bZyXzipF4J8ebAdEREAPHxZT6zJLMHxygasTC/CnSMTRUfyKg5rBmVlZZgwYQJ0Oh1effVVVFVVoaKiAhUVPPVQhLc2H0NNowk9Ivxx+3Bu5U5E1C7IR4WFk23LeV/blMtNzpzMYUXk+++/x/Hjx7F582bExcUhOjq640HOVVDdiGU7CwEAT0/tCyWHHYmITnPbMB16RfqjrqkV//7xmOg4XsVh70izZ8+GJElnfZBzvbThMFotEib07oYJvSNExyEicjlKhRx/vbofAOCTXYXIq2oQnMh78EdjD7fzeDU2HToJhVyGp6f2FR2HiMhlje3ZDZf2iYDZKuGl9VzO6ywsIh6s1WLFc98cBADMuCQePSICBCciInJtT17VF0q5DD8eqcSWI1zO6wwsIh5s2Y5C5J5sQKifuuO0SSIi+mM9Ivxx1+hEAMBz3xxES6tFbCAvwCLioSr0LXjjB9ty3cev7INgX7XgRERE7mH+5b0QGajBiVNNeHdrnug4Ho9FxEP9ff0hNJosGBIfjJvS4kTHISJyG/4aZcfE1Xd+ykPRqSbBiTwbi4gH2n6sGuv3l0MuA/4+LQVyuUx0JCIitzJ1QDTG9AiHyWyba8cVn47DIuJhjGYLnvn6AADgzpGJ6B/D03WJiLpKJpPh+ev6Q6WQYfORSvxwmBNXHYVFxMN8sK0A+dWNCPfXcIIqEdFF6N7NH/eOTQYAPLfuIJpNnLjqCCwiHqS4pglvbrbtCPjkVX0Q5MPzZIiILsa8S3sgNtgHpXXNHa+vZF8sIh5CkiQ8+WUOWlqtuCQpFNenxoqORETk9nzVSjxzjW3i6pKf83GwTC84kedhEfEQazJLse1YNdRKORbdMAAyGSeoEhHZwxX9ozAlJQpmq4TH1uyH2WIVHcmjsIh4gKp6I/7+7SEAwILLeyG5m7/gREREnuX56/ojUKvEgVIDPtxeIDqOR2ER8QDPrTsIfXMr+scE4t6xSaLjEBF5nIgALZ5u21vktU25KKxuFJzIc7CIuLnvD1ZgfU45FHIZ/nHjQCgV/F9KROQIN6fFYUyPcBjNVjy+dj/3FrETvmu5MX1zK/7atmfIfeOSkRLLPUOIiBxFJpPhpesHwEelwC/5NVi1p1h0JI/AIuLGXlx/CCcNRiSF+2H+ZT1FxyEi8njxYb7482TbHk0vrT+M0rpmwYncH4uIm/r+YAU+31sCmQx4+YYB0KoUoiMREXmFu0YnITU+GPVGM/7v832wWvkRzcVgEXFDVfVGPLE2BwBw39hkXJIcJjgREZH3UMhleO2WwfBRKbAr/xQ+2sFVNBeDRcTNSJKEx9fsx6lGE/pEBWDhZG7jTkTkbEnhfnj66r4AgH9uPIqjFfWCE7kvFhE3szK9GD8eqYRaIccb0wdDo+RHMkREItw+PB6X9omAyWLF/FVZMJp5Fs2FYBFxI4XVjR0blz16ZW/0iQoUnIiIyHvJZDK8fOMAhPqpcaSiHq9tyhUdyS2xiLgJs8WKBZ9no7nVgpHJYbh7NDcuIyISLSJAi0U3DABgO4vml/xTghO5HxYRN/HK90eRVVSHAK0Sr94yCHI5z5IhInIFV/SPwi1D4yBJwPxVWahuMIqO5FZYRNzAD4dO4r2t+QCAf9w4ELHBPoITERHRbz17TX907+aHkwYjHlmVDQuX9HYai4iLK65pwp+/2AcAmD0qEVcNiBaciIiIfs9Po8TiGWnQquTYfrwab24+JjqS22ARcWFGswXzVmRC39yKwbpgPHlVX9GRiIjoD/SKDMCL02zzRf794zFsP1YtOJF7YBFxYS+tP4x9JXoE+6rw9h1DoFbyfxcRkSu7MS0O04fpOuaLVOhbREdyeXxnc1Hf7CvDx7tOAABeu2UQ54UQEbmJ567tj77RgTjVaMLDKzNhMltFR3JpLCIuaH9JHf7yX9u8kAcmdMelfSIFJyIios7SqhR4544hCNAosaewFs+uOwBJ4uTVP8Ii4mIq9C2495O9aGm1YkLvbvjzJG7hTkTkbpLC/fDv2wZDJrPtiP3hdp5H80dYRFxIk8mMez7Zg5MGI3pG+OM/t6VCqeD/IiIid3Rpn0g81bbI4MUNh7H5yEnBiVwT3+VchNUqYeHqfThQakConxofzR6GQK1KdCwiIroIc8YkdUxefXhFFo5UGERHcjksIi7iX5uOYuPBCqgVcrw3Mw26UF/RkYiI6CLJZDL87boUjEgORaPJgjnL9nLn1d9hEXEBn/5yAm9vyQMALLphAIYlhgpORERE9qJWyvHujDQkhvmitK4Zdy3dg/qWVtGxXAaLiGBfZpXgma8PAAAevrQHbkyLE5yIiIjsLdhXjQ9nD0Oonxo5pXrM+Xgvmk0W0bFcAouIQN8frMD/fbEfkgTMGpmAhVwhQ0Tksbp388cndw9HgEaJ9IIaPLA8g3uMgEVEmB3HqzFvRRYsVgk3DonDs9f0h0zGE3WJiDxZSmwQPrprGLQqOX46WoUFq3lAHouIABknanHvJ3thslhxZf8o/OPGAZDLWUKIiLzBsMRQvDdzKFQKGdbnlOOJtfth9eIywiLiZNuPVWPmh7vRZLJgbM9w/Pu2wdwrhIjIy4zv1Q3/mZ4KuQz4fG8J/vzFPrRavPNjGr4DOtHGA+W4e9mejhLy3sw0aJQK0bGIiEiAKQOi8fqtg6GUy/BlVinmfpqBllbvm8DKIuIkn+8txoPLM2GyWDElJQofzBoKX7VSdCwiIhLousGxWHJnGjRKOX48UolZH6V73dJeFhEn+GBbPh79735YJeDWoTq8dfsQjoQQEREA21bw7atpdhfU4Lb3f/GqTc9YRBzIaLbg8TX78cL6wwCA+8Yl4+UbB0DBialERPQblySHYeV9IxDmp8aBUgOue2sHDpTqRcdyCocWkWuvvRbx8fHQarWIjo7GzJkzUVZW5sindBnl+mbc8t4vWLWnGDIZ8MSUPnhiSh8u0SUiorNKiQ3C53NHduzAeuPinViTUSI6lsM5tIhMnDgRn3/+OY4ePYo1a9YgLy8PN910kyOf0iX8kn8K17y5HfuK6xDko8LHdw3H/eO7s4QQEdE5de/mj6/njcGlfSJgNFvx5y/24ZmvD3j0xmcySZKctnh53bp1mDZtGoxGI1Sq858sazAYEBQUBL1ej8DAQCckvDhmixXvbyvAq98fhcUqoW90IJbwADsiIuoiq1XCv388hn//eAwAkJYQgtduGYSEMD/ByTqnK+/fTisiNTU1eOCBB1BaWort27ef9Rqj0Qij8dcJOgaDATqdzi2KyOFyAx79737ktH2mN21wDBbdMBA+ak5KJSKiC/Pj4ZN4ZFU26o1maFVy/N/k3rhrdJLLzzXsShFx+GTVxx57DH5+fggLC0NRURG+/vrrP7x20aJFCAoK6njodDpHx7toJrMVr23KxTVvbkdOqR6BWiX+edNAvH7rYJYQIiK6KJf1jcT6P43FqO5haGm14oX1h3Hj4p3IPVkvOprddHlE5LnnnsPzzz9/zmv27NmDoUOHAgCqq6tRU1ODEydO4Pnnn0dQUBC+/fbbs86XcKcREUmSsOnQSbzy3VEcq2wAAEzuF4kXpqUgIlArOB0REXkSSZKwak8xXlp/GPVGM9QKOe4ak4j7x3VHqJ9adLwzOPSjmerqalRXV5/zmsTERGi1Z74Zl5SUQKfTYefOnRg5cuR5n8sV54hIkoSfcqvw+qZc7C+xfQwT5qfG365LwVUDojghlYiIHKZc34ynvzyAH49UAgD81ArcPSYJ94xJRpDv+edeOktX3r+7vLVneHg4wsPDLyhYe+f57aiHuzCaLdhypApLfs5DZlEdAMBXrcDsUYm4b1wygn1dr5ESEZFniQ7ywQezhmLzkUq8tikXB8sMeHPzcSzbWYi7RifhlqFxiAtxrwUSDpusmp6ejvT0dIwZMwYhISHIz8/HM888g/Lychw8eBAajea8v4foERFJkpBVXIe1mSX4Zl859M22bXc1SjnuHJmA+8d3R7j/+f87iIiI7M1qlfD9oQq8vukYjv5mzsiI5FDcMCQOU1KiEKAVM0riEqtmcnJyMH/+fOzbtw+NjY2Ijo7GlVdeiaeffhqxsbGd+j2cXUTMFiuOVNQjq6gWWUV1SC+sQUltc8f3IwM1uD41DnePTuQ8ECIicglWq4QNB8qxYncRduWfQvu7ulYlx9CEUAyJD0ZqfAgG64IR4qT5JC5RROzBUUUk92Q9Pt9TjNqmVtQ1mVDX3IraJhPK61rQ/LuTD31UCkxJicINQ+IwsnuYyy+ZIiIi71Va14yvskqxNrMEeVWNZ3w/JkiLED81QnzVCPZVIcRXjb7Rgbj9kni75mAROY+tuVWY9VH6Wb8XoFVisM7WHofEB2NYYij8NDwll4iI3IckSTh6sh57C20j/FnFtcg/SzEBgHG9uuGTu4fb9fkdOlnVEySH+7VNMLW1wRBfFYJ91YgI0CAxzA9yjnoQEZEbk8lk6BMViD5RgZgxIgEAUNdkQkF1I+qabJ8C1LV9KhAnePdvrxwRISIiIsdxqZ1ViYiIiP4IiwgREREJwyJCREREwrCIEBERkTAsIkRERCQMiwgREREJwyJCREREwrCIEBERkTAsIkRERCQMiwgREREJwyJCREREwrCIEBERkTAsIkRERCSMUnSAc2k/GNhgMAhOQkRERJ3V/r7d/j5+Li5dROrr6wEAOp1OcBIiIiLqqvr6egQFBZ3zGpnUmboiiNVqRVlZGQICAiCTyez6exsMBuh0OhQXFyMwMNCuvzf9ivfZOXifnYP32Tl4n53HUfdakiTU19cjJiYGcvm5Z4G49IiIXC5HXFycQ58jMDCQf9CdgPfZOXifnYP32Tl4n53HEff6fCMh7ThZlYiIiIRhESEiIiJhvLaIaDQaPPvss9BoNKKjeDTeZ+fgfXYO3mfn4H12Hle41y49WZWIiIg8m9eOiBAREZF4LCJEREQkDIsIERERCcMiQkRERMJ4ZRF55513kJSUBK1Wi7S0NGzbtk10JLe2aNEiDBs2DAEBAYiIiMC0adNw9OjR066RJAnPPfccYmJi4OPjgwkTJuDgwYOCEnuGRYsWQSaT4ZFHHun4Gu+zfZSWlmLGjBkICwuDr68vBg8ejIyMjI7v8z7bh9lsxtNPP42kpCT4+PggOTkZf/vb32C1Wjuu4b3uup9//hnXXHMNYmJiIJPJ8NVXX532/c7cU6PRiIcffhjh4eHw8/PDtddei5KSEscElrzMqlWrJJVKJb3//vvSoUOHpPnz50t+fn7SiRMnREdzW1dccYW0dOlS6cCBA1J2drY0depUKT4+XmpoaOi45uWXX5YCAgKkNWvWSDk5OdKtt94qRUdHSwaDQWBy95Weni4lJiZKAwcOlObPn9/xdd7ni1dTUyMlJCRIs2fPlnbv3i0VFBRIP/zwg3T8+PGOa3if7eOFF16QwsLCpG+//VYqKCiQvvjiC8nf31964403Oq7hve66DRs2SE899ZS0Zs0aCYD05Zdfnvb9ztzTuXPnSrGxsdKmTZukzMxMaeLEidKgQYMks9ls97xeV0SGDx8uzZ0797Sv9enTR3r88ccFJfI8lZWVEgBp69atkiRJktVqlaKioqSXX36545qWlhYpKChIevfdd0XFdFv19fVSz549pU2bNknjx4/vKCK8z/bx2GOPSWPGjPnD7/M+28/UqVOlu++++7Sv3XDDDdKMGTMkSeK9toffF5HO3NO6ujpJpVJJq1at6rimtLRUksvl0saNG+2e0as+mjGZTMjIyMDkyZNP+/rkyZOxc+dOQak8j16vBwCEhoYCAAoKClBRUXHafddoNBg/fjzv+wV46KGHMHXqVFx++eWnfZ332T7WrVuHoUOH4uabb0ZERARSU1Px/vvvd3yf99l+xowZgx9//BG5ubkAgH379mH79u246qqrAPBeO0Jn7mlGRgZaW1tPuyYmJgYpKSkOue8ufeidvVVXV8NisSAyMvK0r0dGRqKiokJQKs8iSRIWLlyIMWPGICUlBQA67u3Z7vuJEyecntGdrVq1CpmZmdizZ88Z3+N9to/8/HwsXrwYCxcuxJNPPon09HT86U9/gkajwZ133sn7bEePPfYY9Ho9+vTpA4VCAYvFghdffBG33XYbAP6ZdoTO3NOKigqo1WqEhISccY0j3iu9qoi0k8lkp/27JElnfI0uzLx587B//35s3779jO/xvl+c4uJizJ8/H99//z20Wu0fXsf7fHGsViuGDh2Kl156CQCQmpqKgwcPYvHixbjzzjs7ruN9vnirV6/GZ599hhUrVqB///7Izs7GI488gpiYGMyaNavjOt5r+7uQe+qo++5VH82Eh4dDoVCc0egqKyvPaIfUdQ8//DDWrVuHLVu2IC4uruPrUVFRAMD7fpEyMjJQWVmJtLQ0KJVKKJVKbN26Ff/5z3+gVCo77iXv88WJjo5Gv379Tvta3759UVRUBIB/nu3pL3/5Cx5//HFMnz4dAwYMwMyZM7FgwQIsWrQIAO+1I3TmnkZFRcFkMqG2tvYPr7EnryoiarUaaWlp2LRp02lf37RpE0aNGiUolfuTJAnz5s3D2rVrsXnzZiQlJZ32/aSkJERFRZ12300mE7Zu3cr73gWXXXYZcnJykJ2d3fEYOnQo7rjjDmRnZyM5OZn32Q5Gjx59xvLz3NxcJCQkAOCfZ3tqamqCXH7625BCoehYvst7bX+duadpaWlQqVSnXVNeXo4DBw445r7bffqri2tfvvvhhx9Khw4dkh555BHJz89PKiwsFB3NbT3wwANSUFCQ9NNPP0nl5eUdj6ampo5rXn75ZSkoKEhau3atlJOTI912221cgmcHv101I0m8z/aQnp4uKZVK6cUXX5SOHTsmLV++XPL19ZU+++yzjmt4n+1j1qxZUmxsbMfy3bVr10rh4eHSo48+2nEN73XX1dfXS1lZWVJWVpYEQHrttdekrKysjm0qOnNP586dK8XFxUk//PCDlJmZKV166aVcvmtPb7/9tpSQkCCp1WppyJAhHctM6cIAOOtj6dKlHddYrVbp2WeflaKioiSNRiONGzdOysnJERfaQ/y+iPA+28c333wjpaSkSBqNRurTp4+0ZMmS077P+2wfBoNBmj9/vhQfHy9ptVopOTlZeuqppySj0dhxDe91123ZsuWsr8mzZs2SJKlz97S5uVmaN2+eFBoaKvn4+EhXX321VFRU5JC8MkmSJPuPsxARERGdn1fNESEiIiLXwiJCREREwrCIEBERkTAsIkRERCQMiwgREREJwyJCREREwrCIEBERkTAsIkRERCQMiwgREREJwyJCREREwrCIEBERkTAsIkRERCTM/wNKewAhNOmvNwAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "\n",
    "plt.plot(U1[:,0].detach().numpy())"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "id": "b9537d8d",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "torch.Size([100, 1, 2])"
      ]
     },
     "execution_count": 23,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "sol = lambda x: torch.sin(torch.pi*x[:,[0]])*torch.sin(torch.pi*x[:,[1]])\n",
    "x = torch.normal(0,1,size=(100,2))\n",
    "batch_jacobian(sol, x).shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "id": "0a59179d",
   "metadata": {},
   "outputs": [],
   "source": [
    "from kan import KAN\n",
    "import torch\n",
    "\n",
    "# initialize KAN with G=3\n",
    "model = KAN(width=[2,3,1], grid=5, k=3)\n",
    "\n",
    "# create dataset\n",
    "f = lambda x: x[:,[0]]*x[:,[1]] + torch.exp(torch.sin(torch.pi*x[:,[0]])+torch.sin(torch.pi*x[:,[1]]))\n",
    "dataset = create_dataset(f, n_var=2)"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.9.7"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
